├── .github ├── FUNDING.yml └── workflows │ └── ci.yml ├── .gitignore ├── .gitmodules ├── .hgignore ├── .hgsub ├── .hgsubstate ├── AGPLv3 ├── CHANGES-1.0.txt ├── CHANGES-1.1.txt ├── CHANGES.txt ├── CPAL ├── LICENSE ├── README.rst ├── attic ├── ANALYZE_DATES.py ├── APPLY_LICENSE.py ├── BENCHMARKS.txt ├── CHECKTITLE.py ├── CITATIONS.txt ├── CONVERT_LOCALES.py ├── COUNT_ENTITIES_ACROSS_ALL_STYLES.py ├── DATES.patch ├── Diff-skip-comment-notes-for-ibid.patch ├── EXTRA_DATE_HACK_1_0.patch ├── FIXCORESTYLES.py ├── FIXLOCALE.py ├── MAKETESTS.sh ├── MODULAR_LAW.rst ├── MULTI-LINGUAL.txt ├── OLD_coding_and_deployment.txt ├── Unicode-Transpiler.txt ├── academic-productivity.html ├── academic-productivity.rst ├── all_test.sh ├── bluebook_BookWithUnSalesNumber.txt ├── bluebook_lawrev.csl ├── buildOLD.js ├── bundle.sh ├── cache.js ├── citeproc-doc.rst ├── citeproc-js-logo.png ├── citeproc-js-logo.xcf ├── citeproc-js.legacy │ ├── ambigconfig.js │ ├── bibpaging.js │ ├── blob.js │ ├── build.js │ ├── conditions.js │ ├── datemonthconfig.js │ ├── datenumericconfig.js │ ├── dateparse.js │ ├── dateparsetoarray.js │ ├── emptybib.js │ ├── emptycite.js │ ├── flipflopper.js │ ├── formats.js │ ├── formatters.js │ ├── fun.js │ ├── localesniff.js │ ├── makecitationcluster.js │ ├── opt.js │ ├── output.js │ ├── preview.js │ ├── queue.js │ ├── rebuild.js │ ├── rebuildnumbered.js │ ├── registry.js │ ├── render.js │ ├── restore.js │ ├── romanizer.js │ ├── slug.js │ ├── stack.js │ ├── suffixator.js │ ├── sys_rhino_load.js │ ├── sys_rhino_locale.js │ ├── sys_stdrhino_load.js │ ├── sys_stdrhino_locale.js │ ├── sys_stdspidermonkey_load.js │ ├── tmp.js │ ├── urlwrapper.js │ └── util_names.js ├── condition_PlusMinus.txt ├── configure.js ├── core.js ├── csl-bibliography.html ├── csl-field-description.rst ├── csl-style.css ├── display_LineBreaksWithMixedNesting.txt ├── flipflop_SquigglyBraceCase.txt ├── from-docs-substitutions.txt ├── gender_ItemType.txt ├── grind.py ├── group_Oops.txt ├── initials.patch ├── jm-japan-sociological-society.csl ├── language-condition-spec.txt ├── libmozjs.conf ├── load_all_styles.js ├── load_styles.js ├── locale_TitleCaseWeirdLangEmptyLocale.txt ├── mail_andreas_disambiguation_1.txt ├── mail_andreas_disambiguation_2.txt ├── mimicking_html_in_rtf_is_hopeless.patch ├── name_MarkupBug.txt ├── name_ParsedCommaDelimitedDroppingParticleNormalOrderingWithAffixes.txt ├── name_ParsedCommaDelimitedDroppingParticleNormalOrderingWithoutAffixes.txt ├── names_nesting.txt ├── node_datepart.js ├── position.js ├── position_IbidIgnoresCommentNotes.txt ├── position_NearNoteOptionMakesFalse.txt ├── registryOLD.js ├── retrieval.js ├── run-rhino.bat ├── run-rhino.sh ├── run-spidermonkey.py ├── run-tracemonkey.sh ├── scrape_dutch_particles.py ├── speed.js ├── speed.sh ├── unused_tests │ ├── namespaces_Nada.txt │ ├── namespaces_Nada2.txt │ ├── namespaces_Nada3.txt │ ├── namespaces_Nada4.txt │ ├── namespaces_NonNada.txt │ ├── namespaces_NonNada2.txt │ ├── namespaces_NonNada4.txt │ ├── sort_NumberOfAuthorsAsKeyCountMinMax.txt │ ├── terms_EmptyOverload.txt │ └── terms_Missing.txt ├── util_condition.js ├── xml.js ├── xmle4x.js ├── xmle4xLoad.js └── xmljsonMakeXml.js ├── citeproc.js ├── citeproc_commonjs.js ├── cslrun.yaml ├── demo ├── README.md ├── apa.csl ├── citations-1.json ├── citations-2.json ├── citations-3.json ├── citations-4.json ├── citations-5.json ├── citations-6.json ├── citations-7.json ├── citations.json ├── citeproc.js ├── demo.html ├── demo.js ├── items-1.json ├── items-2.json ├── items-3.json ├── items-4.json ├── items-5.json ├── items-6.json ├── items-7.json ├── local.css ├── locales-en-US.xml ├── package-lock.json ├── package.json └── regenerate.js ├── fixtures ├── local │ ├── abbrevs_Archive.txt │ ├── abbrevs_ArchivePlace.txt │ ├── abbrevs_CiteFormFlag.txt │ ├── abbrevs_CiteFormFlagDisambig.txt │ ├── abbrevs_Classic.txt │ ├── abbrevs_ClassicBib.txt │ ├── abbrevs_Event.txt │ ├── abbrevs_JournalExistsInList.txt │ ├── abbrevs_JournalMissingFromListAndJournalAbbreviationFieldAlsoMissing.txt │ ├── abbrevs_JournalMissingFromListButHasJournalAbbreviationField.txt │ ├── abbrevs_JournalSuppressesPublisher.txt │ ├── abbrevs_Jurisdiction.txt │ ├── abbrevs_LongAndShortCaseNames.txt │ ├── abbrevs_MissingSegment.txt │ ├── abbrevs_SeriesExistsInList.txt │ ├── abbrevs_SimpleInstitutionPart.txt │ ├── abbrevs_SuppressMonitor.txt │ ├── abbrevs_SuppressOrdinaryField.txt │ ├── abbrevs_TitleAbbrevFallback.txt │ ├── abbrevs_TitleMainTitleSub.txt │ ├── affix_CitationAffixes.txt │ ├── affix_CommaAfterQuoteCompactPrefix.txt │ ├── affix_FlipflopParens.txt │ ├── affix_FlipflopParensLayoutInText.txt │ ├── affix_FlipflopParensNote.txt │ ├── affix_FlipflopParensNumeric.txt │ ├── affix_PrefixFullCitationTextOnlyCompactPrefix.txt │ ├── affix_PrefixWithDecorationsCompactPrefix.txt │ ├── affix_SpaceWithQuotesCompactSuffix.txt │ ├── affix_SuppressDelimiterCharsWhenFullStopInSuffix.txt │ ├── affix_WithCommasCompactPrefix.txt │ ├── affix_WordProcessorAffixNoSpaceCompactPrefix.txt │ ├── affix_WordProcessorAffixNoSpaceCompactSuffix.txt │ ├── api_SuppressAuthor.txt │ ├── api_UpdateItemsDelete.txt │ ├── api_UpdateItemsDeleteDecrementsByCiteDisambiguation.txt │ ├── api_UpdateItemsReshuffle.txt │ ├── bibheader_EntryspacingDefaultValueOne.txt │ ├── bibheader_EntryspacingExplicitValueZero.txt │ ├── bibheader_SecondFieldAlign.txt │ ├── bibheader_SecondFieldAlignWithAuthor.txt │ ├── bibheader_SecondFieldAlignWithNumber.txt │ ├── bibsection_Exclude.txt │ ├── bibsection_Include.txt │ ├── bibsection_Quash.txt │ ├── bibsection_Select.txt │ ├── bibsection_StyleControl.txt │ ├── bugreports_AffiliationSpoofingBrokenInstitutionalName.txt │ ├── bugreports_AffiliationSpoofingDemoPageFullCiteCruftOnSubsequent.txt │ ├── bugreports_AffiliationSpoofingNoFormattingOnInstitution.txt │ ├── bugreports_AffiliationSpoofingTwoBareInstitutionalAuthors.txt │ ├── bugreports_AffiliationSpoofingWantedTermJoin.txt │ ├── bugreports_AllDecorCrash.txt │ ├── bugreports_ArabicApostropheCrash.txt │ ├── bugreports_ArabicLevelMismatch.txt │ ├── bugreports_AuthorOnlyFail.txt │ ├── bugreports_BadKanjiDateParse.txt │ ├── bugreports_BibCrossTalk.txt │ ├── bugreports_BillLocator.txt │ ├── bugreports_BillLocator2.txt │ ├── bugreports_BillLocator3.txt │ ├── bugreports_BillLocator4.txt │ ├── bugreports_BrokenDisambiguation.txt │ ├── bugreports_BrokenInstitutionalName.txt │ ├── bugreports_CapsAfterOneWordPrefixCompactPrefix.txt │ ├── bugreports_CitationsUndefined.txt │ ├── bugreports_Comments.txt │ ├── bugreports_CountryPlaces.txt │ ├── bugreports_CseNameSort.txt │ ├── bugreports_CslReverseLookup.txt │ ├── bugreports_DelimiterBug.txt │ ├── bugreports_DisambigQuery.txt │ ├── bugreports_DisambiguateByCiteGlitchXXX.txt │ ├── bugreports_EditorAsAuthorOops.txt │ ├── bugreports_EmptyInput.txt │ ├── bugreports_FailWithNoAuthor.txt │ ├── bugreports_FailingIssuedDate.txt │ ├── bugreports_FlipflopFail1.txt │ ├── bugreports_IllustratorInExtra.txt │ ├── bugreports_IsNumericCrash.txt │ ├── bugreports_JapaneseCaseCites.txt │ ├── bugreports_LabelFail.txt │ ├── bugreports_MendeleyApostrophe.txt │ ├── bugreports_MissingItemInJoinCompactSuffix.txt │ ├── bugreports_NameInputBreakage.txt │ ├── bugreports_NoFormattingOnInstitution.txt │ ├── bugreports_NoFormattingOnInstitution2.txt │ ├── bugreports_NoTransliterationWithBookSection.txt │ ├── bugreports_NonBreakingSpaceJoinFail.txt │ ├── bugreports_NumericLocatorAffixes.txt │ ├── bugreports_NumericStyleFirstRefMultipleCiteFailure.txt │ ├── bugreports_Places.txt │ ├── bugreports_PluralIssue.txt │ ├── bugreports_RandomItalics.txt │ ├── bugreports_ShortFormOfTitleFails.txt │ ├── bugreports_TitleCaseFail.txt │ ├── bugreports_TitleCaseFail2.txt │ ├── bugreports_TitleCaseFail3.txt │ ├── bugreports_TurkishDateCorruption.txt │ ├── bugreports_TwoBareInstitutionalAuthors.txt │ ├── bugreports_TwoCitesPlusOneBackref.txt │ ├── bugreports_TwoFullStops.txt │ ├── bugreports_UnderscoreDateRangeDelimiter.txt │ ├── bugreports_UriWrapping.txt │ ├── bugreports_VancouverNestingFail.txt │ ├── bugreports_VichetArticles.txt │ ├── bugreports_YearLastBadOutput.txt │ ├── bugreports_dailDebates.txt │ ├── bugreports_lotOfAuthors.txt │ ├── bugreports_mendeleyNameCrash.txt │ ├── bugreports_wanted_term-join.txt │ ├── citeprocjs_AffiliationSpoofingSubsequentSliceTwoNamesInstitution.txt │ ├── citeprocjs_AuthorListing.txt │ ├── citeprocjs_ExtraFieldRecognition.txt │ ├── citeprocjs_NoByzantineInitialsMisstep.txt │ ├── citeprocjs_ParseDroppingParticleSortOrder.txt │ ├── citeprocjs_ParseNonDroppingParticleSortOrder.txt │ ├── citeprocjs_ParseParticleAsName.txt │ ├── citeprocjs_ParseSuffixAllCapsForceCommaNormalOrder.txt │ ├── citeprocjs_ParseSuffixAllCapsForceCommaSortOrder.txt │ ├── citeprocjs_ParseSuffixAllCapsSimpleNormalOrder.txt │ ├── citeprocjs_ParseSuffixAllCapsSimpleSortOrder.txt │ ├── citeprocjs_ParseSuffixMixedCaseForceCommaNormalOrder.txt │ ├── citeprocjs_ParseSuffixMixedCaseForceCommaSortOrder.txt │ ├── citeprocjs_ParseSuffixMixedCaseSimpleNormalOrder.txt │ ├── citeprocjs_ParseSuffixMixedCaseSimpleSortOrder.txt │ ├── citeprocjs_SecondaryOnShort.txt │ ├── citeprocjs_SubsequentSliceTwoNamesInstitution.txt │ ├── condition_IsNumeric.txt │ ├── condition_IsNumericStrictPages.txt │ ├── condition_Locale.txt │ ├── condition_Locale2.txt │ ├── condition_PlusMinus.txt │ ├── condition_SlashDelimitedNumbers.txt │ ├── consolidation_ChapterItemBibliographySubsequent.txt │ ├── consolidation_ChapterItemConsolidation.txt │ ├── consolidation_ChapterItemCount.txt │ ├── consolidation_LegalItemConsolidation.txt │ ├── consolidation_TwoStageChapterSubsequent.txt │ ├── consolidation_TwoStateFirstRef.txt │ ├── date_CheaterDateRange.txt │ ├── date_DateBCraw.txt │ ├── date_LoneJapaneseMonth.txt │ ├── date_MonthDay.txt │ ├── date_RawParseSimpleDate.txt │ ├── date_RawSeasonRange1.txt │ ├── date_RawSeasonRange2.txt │ ├── date_RawSeasonRange3.txt │ ├── dateparser_CheaterSyntax.txt │ ├── decor_BreakingQuotes.txt │ ├── disambiguate_AddNamesDisambiguatePriority.txt │ ├── disambiguate_BasedOnSubsequentFormWithBackref.txt │ ├── disambiguate_BasedOnSubsequentFormWithBackref3.txt │ ├── disambiguate_BasedOnSubsequentFormWithLocator.txt │ ├── disambiguate_ByCiteDisambiguateConditionOffSpec.txt │ ├── disambiguate_DisambiguateTrueAndYearSuffixOffSpec.txt │ ├── disambiguate_DisambiguateTrueAndYearSuffixOneOffSpec.txt │ ├── disambiguate_DisambiguateTrueInBibliographyOnly.txt │ ├── disambiguate_PreferSingleName.txt │ ├── disambiguate_WithConsolidation.txt │ ├── discretionary_AuthorDateAuthorOnlyThenSuppressAuthor.txt │ ├── discretionary_AuthorDateAuthorOnlyThenSuppressAuthorNoteStyle.txt │ ├── discretionary_AuthorOnly.txt │ ├── discretionary_AuthorOnlySuppressLocator.txt │ ├── discretionary_CitationNumberAuthorOnlyThenSuppressAuthor.txt │ ├── discretionary_CitationNumberAuthorOnlyThenSuppressAuthorWithIntext.txt │ ├── discretionary_CitationNumberSuppressAuthor.txt │ ├── discretionary_ExampleMake.txt │ ├── discretionary_ExampleMultiple.txt │ ├── discretionary_ExampleProcess.txt │ ├── discretionary_ExampleSeveralAuthorsWithIntext.txt │ ├── discretionary_ExampleUnauthored.txt │ ├── discretionary_FirstReferenceNumberWithIntext.txt │ ├── discretionary_FirstReferenceNumberWithoutIntext.txt │ ├── discretionary_IbidInAuthorDateStyleWithIntext.txt │ ├── discretionary_IbidInAuthorDateStyleWithoutIntext.txt │ ├── discretionary_IbidInNoteStyleWithIntext.txt │ ├── discretionary_IbidInNoteStyleWithoutIntext.txt │ ├── discretionary_NoteAuthorOnlyNoAuthorWithoutIntext.txt │ ├── discretionary_RemovalOfStubCiteBibliographyWithIntext.txt │ ├── discretionary_RemovalOfStubCiteBibliographyWithoutIntext.txt │ ├── discretionary_RemovalOfStubCiteCitationWithIntext.txt │ ├── discretionary_RemovalOfStubCiteCitationWithoutIntext.txt │ ├── discretionary_SimpleName.txt │ ├── discretionary_SingleNarrativeCitation.txt │ ├── discretionary_SuppressAuthor.txt │ ├── discretionary_SuppressAuthorSolo.txt │ ├── discretionary_SuppressEditorSolo.txt │ ├── discretionary_SuppressMultipleAuthors.txt │ ├── eclac_BookFromImf.txt │ ├── eclac_BookWithUnSalesNumber.txt │ ├── eclac_BookWithUnSalesNumberSpanishStyle.txt │ ├── flipflop_CompleteCiteInPrefixCompactPrefix.txt │ ├── flipflop_ItalicsSimplePlus.txt │ ├── flipflop_LeadingMarkupWithApostropheCompactPrefix.txt │ ├── flipflop_LongComplexPrefixCompactPrefix.txt │ ├── form_ContainerTitleShortWithTitleSubSupport.txt │ ├── form_ContainerTitleShortWithTitleSubSupportFrench.txt │ ├── form_ShortTitleOnly.txt │ ├── form_TitleShortForLegalCase.txt │ ├── form_TitleShortWithTitleSubSupport.txt │ ├── form_UppercaseSubtitleWithNumber.txt │ ├── group_PrefixParensOnGroupNoCommaSafe.txt │ ├── group_PrefixParensOnNumberNoCommaSafe.txt │ ├── group_RejectAlphaLabel.txt │ ├── group_RejectAndRequireAlphaText.txt │ ├── group_RejectAndRequireAlphaValue.txt │ ├── group_RejectCommaSafeBeginning.txt │ ├── group_RejectCommaSafeNumbersOnly.txt │ ├── group_RejectCommaSafeNumbersOnlyAfterDate.txt │ ├── group_RejectCommaSafeNumbersOnlyBeginning.txt │ ├── group_RejectCommaSafeNumbersOnlyDateInTextMacroWithAffix.txt │ ├── group_RejectCommaSafeNumbersOnlyDateWithAffix.txt │ ├── group_RejectCommaSafeNumbersOnlyDateWithAffixInNestedTextMacros.txt │ ├── group_RejectCommaSafeNumbersOnlyMixedLocator.txt │ ├── group_RejectCommaSafeNumbersOnlyTwice.txt │ ├── group_RejectCommaSafeNumbersOnlyWithLabel.txt │ ├── group_RejectCommaSafeOnAffixes.txt │ ├── group_RejectWithMacro.txt │ ├── group_RequireAlphaLabel.txt │ ├── group_RequireCommaOnSymbolAfterNumber.txt │ ├── group_RequireCommaOnSymbolAlways.txt │ ├── group_RequireWithMacro.txt │ ├── initials_CorrectSpacingWithNameAsSortOrder.txt │ ├── initials_InitializeFalseToSpace.txt │ ├── initials_NonByzantineDisambiguated.txt │ ├── initials_NonByzantineSimple.txt │ ├── institutions_AffiliationSpoofingItalicInstitutionHarvard.txt │ ├── institutions_AffiliationSpoofingItalicInstitutionHarvardBib.txt │ ├── institutions_AffiliationSpoofingMixedPeopleAndOrganizationsAlwaysUseFirst.txt │ ├── institutions_AffiliationSpoofingMixedPeopleAndOrganizationsInTextImplicitChop.txt │ ├── institutions_AffiliationSpoofingMixedPeopleAndOrganizationsMaybeUseFirst.txt │ ├── institutions_AffiliationSpoofingQuotesSuppressCommaSplit.txt │ ├── institutions_AffiliationSpoofingSimplePersonalInstitution.txt │ ├── institutions_AffiliationSpoofingTwoThreeOrFourInstitutions.txt │ ├── institutions_FirstAndLast.txt │ ├── institutions_FirstOnly.txt │ ├── institutions_FirstOnlyOnShort.txt │ ├── institutions_FormFromInstitutionOnly.txt │ ├── institutions_ItalicInstitutionHarvard.txt │ ├── institutions_ItalicInstitutionHarvardBib.txt │ ├── institutions_MixedPeopleAndOrganizationsAlwaysUseFirst.txt │ ├── institutions_MixedPeopleAndOrganizationsInTextImplicitChop.txt │ ├── institutions_MixedPeopleAndOrganizationsMaybeUseFirst.txt │ ├── institutions_QuotesSuppressCommaSplit.txt │ ├── institutions_SimplePersonalInstitution.txt │ ├── institutions_SimpleShortLong.txt │ ├── institutions_SubcommitteeCommittee.txt │ ├── institutions_TwoThreeOrFourInstitutions.txt │ ├── itemtypes_CambodiaCases.txt │ ├── jasoc_example07.txt │ ├── juris_EarlyBabyBlue.txt │ ├── juris_EarlyOSCOLA.txt │ ├── juris_SimpleJurisdiction.txt │ ├── label_EmbeddedNumberLabel.txt │ ├── label_FormOverride.txt │ ├── label_FromLocator.txt │ ├── label_NonNumericIssue.txt │ ├── label_NonNumericLabelAsSingular.txt │ ├── label_NonNumericNumber.txt │ ├── label_NonNumericNumberFallbackToIssue.txt │ ├── label_PageLabel.txt │ ├── label_PageLabel2.txt │ ├── label_PageWithEmbeddedLabel.txt │ ├── label_SectionFormPageOverride.txt │ ├── label_TestSmartEdition.txt │ ├── label_TestSmartLocator.txt │ ├── label_TestSmartTrimmer.txt │ ├── language_BaseLocale.txt │ ├── language_Condition.txt │ ├── language_ConditionSimple.txt │ ├── language_InterCiteJoins.txt │ ├── layout_MultipleAccessedUsesDefault.txt │ ├── layout_MultipleStraySpace.txt │ ├── layout_MultipleWithItemLocator.txt │ ├── layout_SimpleMultiple.txt │ ├── layout_UndefinedNew.txt │ ├── locale_AbbrevLangAndJurisModule.txt │ ├── locale_EffectOfStyleDefinition.txt │ ├── locale_LoadTwoJurisPrefs.txt │ ├── locale_RescueBadLocales.txt │ ├── locale_SelectAbbrevs.txt │ ├── locale_TitleCaseEnglishLangUpperEmptyLocale.txt │ ├── locale_abbrevEntireToPartFallback.txt │ ├── locator_BillWithBarePage.txt │ ├── locator_EnDashes.txt │ ├── locator_EnDashes2.txt │ ├── locator_LocatorExtraIbid.txt │ ├── locator_LocatorExtraIbid2.txt │ ├── locator_LocatorExtraIbid3.txt │ ├── locator_PageRangeDelimiter.txt │ ├── locator_ParseDate.txt │ ├── locator_PassThroughEnDash.txt │ ├── locator_QuashAffixesWithLocator.txt │ ├── locator_Sections.txt │ ├── locator_TranslationLocators.txt │ ├── magic_CourtClassSort.txt │ ├── magic_ImplicitShortTitle.txt │ ├── magic_SameAuthorNoCollapseNoImplicitComma.txt │ ├── magic_SectionVariable.txt │ ├── magic_StripPeriodsOnDottedTitle.txt │ ├── magic_StripPeriodsWithTextCase.txt │ ├── magic_SuppressExtraTerminalPunctuationAfterTerm.txt │ ├── magic_SuppressLayoutDelimiterIfPrefixCommaCompactPrefix.txt │ ├── magic_SuppressYearIfMatchesCollectionNumber.txt │ ├── magic_SuppressYearIfMatchesCollectionNumberDisabled.txt │ ├── magic_TermCapitalizationWithPrefixCompactPrefix.txt │ ├── magic_TitleLeadingNoiseWords.txt │ ├── magic_TypeFieldHack.txt │ ├── magic_WrapDOI.txt │ ├── magic_WrapDOI2.txt │ ├── magic_WrapDOI3.txt │ ├── magic_WrapDOI4.txt │ ├── magic_cslReverseLookupOnSys.txt │ ├── multilingual_AffiliationSpoofingLocalisedNameDelimiters.txt │ ├── multilingual_DisableItalic.txt │ ├── multilingual_InstitutionalAuthors.txt │ ├── multilingual_ItalicOnTitleOnly.txt │ ├── multilingual_LocalisedNameDelimiters.txt │ ├── multilingual_MultipleLocalesNoLanguageField.txt │ ├── multilingual_NameFormatOverride.txt │ ├── multilingual_NameSort.txt │ ├── multilingual_NameTransliteration.txt │ ├── multilingual_RightToLeft.txt │ ├── multilingual_ShortFormTitleVariant.txt │ ├── multilingual_ShortTitleVariant.txt │ ├── multilingual_SuffixSelection.txt │ ├── multilingual_TextCaseSuppressOnNonEnglishVariants.txt │ ├── multilingual_TextCaseSuppressOnNonEnglishVariants2.txt │ ├── multilingual_TextCaseSuppressOnNonEnglishVariants3.txt │ ├── multilingual_TextPrimaryExists.txt │ ├── multilingual_TextPrimaryNonexistent.txt │ ├── multilingual_TextSecondaryExists.txt │ ├── multilingual_TextSecondaryNonexistent.txt │ ├── multilingual_TextSortMacroExists.txt │ ├── multilingual_TextSortVariableExists.txt │ ├── multilingual_TitleWithAffixes.txt │ ├── name_AffiliationSpoofingEditorTranslatorWithTranslatorOnly.txt │ ├── name_AffiliationSpoofingImplicitInstitution.txt │ ├── name_AffiliationSpoofingSortOrderOnFirstOnly.txt │ ├── name_AffiliationSpoofingSuppressInstitutions.txt │ ├── name_AffiliationSpoofingSuppressPersons.txt │ ├── name_Asian.txt │ ├── name_AsianEtAl.txt │ ├── name_CheaterNames.txt │ ├── name_CountAuthors.txt │ ├── name_CourtCollapse.txt │ ├── name_EditorTranslatorRequireMatch.txt │ ├── name_EditorTranslatorWithTranslatorOnly.txt │ ├── name_EtAlAsSuffix.txt │ ├── name_EtAlAsSuffixInCitationShort.txt │ ├── name_ImplicitInstitution.txt │ ├── name_InheritDelimiter.txt │ ├── name_ItalicDelimiter.txt │ ├── name_MixedFormatsInitialSortOrderAllWithDecorationsEtAl.txt │ ├── name_MixedFormatsInitialSortOrderFirstWithDecorationsEtAl.txt │ ├── name_MixedFormatsInitialsWithDecorationsEtAl.txt │ ├── name_MixedFormatsPrimaryDecorations.txt │ ├── name_MixedFormatsWithDecorationsEtAl.txt │ ├── name_MixedFormatsWithDecorationsPlusAlternateEtAlDecorations.txt │ ├── name_MixedFormatsWithDecorationsPlusEtAlDecorations.txt │ ├── name_NbspJoinEN.txt │ ├── name_NbspJoinFR.txt │ ├── name_SimpleVietnamese.txt │ ├── name_SingleFieldZotero.txt │ ├── name_SortOrderOnFirstOnly.txt │ ├── name_StartAndAtOrMoreThanMax.txt │ ├── name_StartAndJustOneMoreThanEtAlUseFirst.txt │ ├── name_StartAndLessThanMax.txt │ ├── name_SubsequentAuthorSubstituteCompleteAll.txt │ ├── name_SubsequentAuthorSubstituteCompleteEach.txt │ ├── name_SubsequentAuthorSubstituteCompleteEachEtAl.txt │ ├── name_SubsequentAuthorSubstitutePartialEach.txt │ ├── name_SubsequentAuthorSubstitutePartialFirst.txt │ ├── name_SubstituteCondition.txt │ ├── name_SuppressInstitutions.txt │ ├── name_SuppressPersons.txt │ ├── name_TranslatorInMultiLayout.txt │ ├── name_VietnameseHungarianSimple.txt │ ├── name_YearCollapseWithYearSuffix.txt │ ├── name_ZwnbspJoinEN.txt │ ├── name_ZwnbspJoinFR.txt │ ├── nameattr_EtAlSubsequentMinOnCitationInCitation.txt │ ├── nameattr_EtAlSubsequentMinOnStyleInCitation.txt │ ├── nameattr_EtAlSubsequentUseFirstOnCitationInCitation.txt │ ├── nameattr_EtAlSubsequentUseFirstOnStyleInCitation.txt │ ├── number_AffixesOnAdjacentNumbers.txt │ ├── number_AffixesWithMultiple.txt │ ├── number_AmpersandQA.txt │ ├── number_CollapseWithEnDash.txt │ ├── number_ConditionalAndLabel.txt │ ├── number_DateOrdinalMasculine.txt │ ├── number_DocketNumberHyphenOK.txt │ ├── number_EditionOrdinalMasculine.txt │ ├── number_EditionOrdinalWithMultiple.txt │ ├── number_EditionOrdinalWithMultipleBraced.txt │ ├── number_EditionOrdinalWithMultipleBracedL14.txt │ ├── number_EditionOrdinalWithMultipleBracedL21.txt │ ├── number_EditionOrdinalWithMultipleL2.txt │ ├── number_EditionOrdinalWithMultipleL20.txt │ ├── number_EditionOrdinalWithMultipleL23.txt │ ├── number_EditionSort.txt │ ├── number_EmbeddedOnlyDefaultsToShort.txt │ ├── number_ExplicitLeafNumber.txt │ ├── number_ForceGender.txt │ ├── number_HyphenatedStrings.txt │ ├── number_LargeNumber.txt │ ├── number_NewOrdinals.txt │ ├── number_NumericDelimiterWithAlphaSuffix.txt │ ├── number_ParsedLabels.txt │ ├── number_RangeDelimiters.txt │ ├── number_RevLocatorChapteroverrideEmbeddedbracesLongordinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedbracesOrdinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedbracesPlain.txt │ ├── number_RevLocatorChapteroverrideEmbeddedbracesRoman.txt │ ├── number_RevLocatorChapteroverrideEmbeddedpluralLongordinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedpluralOrdinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedpluralPlain.txt │ ├── number_RevLocatorChapteroverrideEmbeddedpluralRoman.txt │ ├── number_RevLocatorChapteroverrideEmbeddedslugLongordinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedslugOrdinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedslugPlain.txt │ ├── number_RevLocatorChapteroverrideEmbeddedslugRoman.txt │ ├── number_RevLocatorChapteroverrideEmbeddedundefLongordinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedundefOrdinal.txt │ ├── number_RevLocatorChapteroverrideEmbeddedundefPlain.txt │ ├── number_RevLocatorChapteroverrideEmbeddedundefRoman.txt │ ├── number_RevLocatorChapteroverrideMultipleLongordinal.txt │ ├── number_RevLocatorChapteroverrideMultipleOrdinal.txt │ ├── number_RevLocatorChapteroverrideMultiplePlain.txt │ ├── number_RevLocatorChapteroverrideMultipleRoman.txt │ ├── number_RevLocatorChapteroverrideRangeLongordinal.txt │ ├── number_RevLocatorChapteroverrideRangeOrdinal.txt │ ├── number_RevLocatorChapteroverrideRangePlain.txt │ ├── number_RevLocatorChapteroverrideRangeRoman.txt │ ├── number_RevLocatorChapteroverrideSingleLongordinal.txt │ ├── number_RevLocatorChapteroverrideSingleOrdinal.txt │ ├── number_RevLocatorChapteroverrideSinglePlain.txt │ ├── number_RevLocatorChapteroverrideSingleRoman.txt │ ├── number_RevLocatorNolabelEmbeddedbracesLongordinal.txt │ ├── number_RevLocatorNolabelEmbeddedbracesOrdinal.txt │ ├── number_RevLocatorNolabelEmbeddedbracesPlain.txt │ ├── number_RevLocatorNolabelEmbeddedbracesRoman.txt │ ├── number_RevLocatorNolabelEmbeddedpluralLongordinal.txt │ ├── number_RevLocatorNolabelEmbeddedpluralOrdinal.txt │ ├── number_RevLocatorNolabelEmbeddedpluralPlain.txt │ ├── number_RevLocatorNolabelEmbeddedpluralRoman.txt │ ├── number_RevLocatorNolabelEmbeddedslugLongordinal.txt │ ├── number_RevLocatorNolabelEmbeddedslugOrdinal.txt │ ├── number_RevLocatorNolabelEmbeddedslugPlain.txt │ ├── number_RevLocatorNolabelEmbeddedslugRoman.txt │ ├── number_RevLocatorNolabelEmbeddedundefLongordinal.txt │ ├── number_RevLocatorNolabelEmbeddedundefOrdinal.txt │ ├── number_RevLocatorNolabelEmbeddedundefPlain.txt │ ├── number_RevLocatorNolabelEmbeddedundefRoman.txt │ ├── number_RevLocatorNolabelMultipleLongordinal.txt │ ├── number_RevLocatorNolabelMultipleOrdinal.txt │ ├── number_RevLocatorNolabelMultiplePlain.txt │ ├── number_RevLocatorNolabelMultipleRoman.txt │ ├── number_RevLocatorNolabelRangeLongordinal.txt │ ├── number_RevLocatorNolabelRangeOrdinal.txt │ ├── number_RevLocatorNolabelRangePlain.txt │ ├── number_RevLocatorNolabelRangeRoman.txt │ ├── number_RevLocatorNolabelSingleLongordinal.txt │ ├── number_RevLocatorNolabelSingleOrdinal.txt │ ├── number_RevLocatorNolabelSinglePlain.txt │ ├── number_RevLocatorNolabelSingleRoman.txt │ ├── number_RevLocatorPagelabelEmbeddedbracesLongordinal.txt │ ├── number_RevLocatorPagelabelEmbeddedbracesOrdinal.txt │ ├── number_RevLocatorPagelabelEmbeddedbracesPlain.txt │ ├── number_RevLocatorPagelabelEmbeddedbracesRoman.txt │ ├── number_RevLocatorPagelabelEmbeddedpluralLongordinal.txt │ ├── number_RevLocatorPagelabelEmbeddedpluralOrdinal.txt │ ├── number_RevLocatorPagelabelEmbeddedpluralPlain.txt │ ├── number_RevLocatorPagelabelEmbeddedpluralRoman.txt │ ├── number_RevLocatorPagelabelEmbeddedslugLongordinal.txt │ ├── number_RevLocatorPagelabelEmbeddedslugOrdinal.txt │ ├── number_RevLocatorPagelabelEmbeddedslugPlain.txt │ ├── number_RevLocatorPagelabelEmbeddedslugRoman.txt │ ├── number_RevLocatorPagelabelEmbeddedundefLongordinal.txt │ ├── number_RevLocatorPagelabelEmbeddedundefOrdinal.txt │ ├── number_RevLocatorPagelabelEmbeddedundefPlain.txt │ ├── number_RevLocatorPagelabelEmbeddedundefRoman.txt │ ├── number_RevLocatorPagelabelMultipleLongordinal.txt │ ├── number_RevLocatorPagelabelMultipleOrdinal.txt │ ├── number_RevLocatorPagelabelMultiplePlain.txt │ ├── number_RevLocatorPagelabelMultipleRoman.txt │ ├── number_RevLocatorPagelabelRangeLongordinal.txt │ ├── number_RevLocatorPagelabelRangeOrdinal.txt │ ├── number_RevLocatorPagelabelRangePlain.txt │ ├── number_RevLocatorPagelabelRangeRoman.txt │ ├── number_RevLocatorPagelabelSingleLongordinal.txt │ ├── number_RevLocatorPagelabelSingleOrdinal.txt │ ├── number_RevLocatorPagelabelSinglePlain.txt │ ├── number_RevLocatorPagelabelSingleRoman.txt │ ├── number_RevNumberChapteroverrideEmbeddedpluralLongordinal.txt │ ├── number_RevNumberChapteroverrideEmbeddedpluralOrdinal.txt │ ├── number_RevNumberChapteroverrideEmbeddedpluralPlain.txt │ ├── number_RevNumberChapteroverrideEmbeddedpluralRoman.txt │ ├── number_RevNumberChapteroverrideMultipleLongordinal.txt │ ├── number_RevNumberChapteroverrideMultipleOrdinal.txt │ ├── number_RevNumberChapteroverrideMultiplePlain.txt │ ├── number_RevNumberChapteroverrideMultipleRoman.txt │ ├── number_RevNumberChapteroverrideRangeLongordinal.txt │ ├── number_RevNumberChapteroverrideRangeOrdinal.txt │ ├── number_RevNumberChapteroverrideRangePlain.txt │ ├── number_RevNumberChapteroverrideRangeRoman.txt │ ├── number_RevNumberChapteroverrideSingleLongordinal.txt │ ├── number_RevNumberChapteroverrideSingleOrdinal.txt │ ├── number_RevNumberChapteroverrideSinglePlain.txt │ ├── number_RevNumberChapteroverrideSingleRoman.txt │ ├── number_RevNumberNolabelEmbeddedpluralLongordinal.txt │ ├── number_RevNumberNolabelEmbeddedpluralOrdinal.txt │ ├── number_RevNumberNolabelEmbeddedpluralPlain.txt │ ├── number_RevNumberNolabelEmbeddedpluralRoman.txt │ ├── number_RevNumberNolabelMultipleLongordinal.txt │ ├── number_RevNumberNolabelMultipleOrdinal.txt │ ├── number_RevNumberNolabelMultiplePlain.txt │ ├── number_RevNumberNolabelMultipleRoman.txt │ ├── number_RevNumberNolabelRangeLongordinal.txt │ ├── number_RevNumberNolabelRangeOrdinal.txt │ ├── number_RevNumberNolabelRangePlain.txt │ ├── number_RevNumberNolabelRangeRoman.txt │ ├── number_RevNumberNolabelSingleLongordinal.txt │ ├── number_RevNumberNolabelSingleOrdinal.txt │ ├── number_RevNumberNolabelSinglePlain.txt │ ├── number_RevNumberNolabelSingleRoman.txt │ ├── number_RevNumberNumberlabeldefEmbeddedpluralLongordinal.txt │ ├── number_RevNumberNumberlabeldefEmbeddedpluralOrdinal.txt │ ├── number_RevNumberNumberlabeldefEmbeddedpluralPlain.txt │ ├── number_RevNumberNumberlabeldefEmbeddedpluralRoman.txt │ ├── number_RevNumberNumberlabeldefMultipleLongordinal.txt │ ├── number_RevNumberNumberlabeldefMultipleOrdinal.txt │ ├── number_RevNumberNumberlabeldefMultiplePlain.txt │ ├── number_RevNumberNumberlabeldefMultipleRoman.txt │ ├── number_RevNumberNumberlabeldefRangeLongordinal.txt │ ├── number_RevNumberNumberlabeldefRangeOrdinal.txt │ ├── number_RevNumberNumberlabeldefRangePlain.txt │ ├── number_RevNumberNumberlabeldefRangeRoman.txt │ ├── number_RevNumberNumberlabeldefSingleLongordinal.txt │ ├── number_RevNumberNumberlabeldefSingleOrdinal.txt │ ├── number_RevNumberNumberlabeldefSinglePlain.txt │ ├── number_RevNumberNumberlabeldefSingleRoman.txt │ ├── number_RevNumberNumberlabelundefEmbeddedpluralLongordinal.txt │ ├── number_RevNumberNumberlabelundefEmbeddedpluralOrdinal.txt │ ├── number_RevNumberNumberlabelundefEmbeddedpluralPlain.txt │ ├── number_RevNumberNumberlabelundefEmbeddedpluralRoman.txt │ ├── number_RevNumberNumberlabelundefMultipleLongordinal.txt │ ├── number_RevNumberNumberlabelundefMultipleOrdinal.txt │ ├── number_RevNumberNumberlabelundefMultiplePlain.txt │ ├── number_RevNumberNumberlabelundefMultipleRoman.txt │ ├── number_RevNumberNumberlabelundefRangeLongordinal.txt │ ├── number_RevNumberNumberlabelundefRangeOrdinal.txt │ ├── number_RevNumberNumberlabelundefRangePlain.txt │ ├── number_RevNumberNumberlabelundefRangeRoman.txt │ ├── number_RevNumberNumberlabelundefSingleLongordinal.txt │ ├── number_RevNumberNumberlabelundefSingleOrdinal.txt │ ├── number_RevNumberNumberlabelundefSinglePlain.txt │ ├── number_RevNumberNumberlabelundefSingleRoman.txt │ ├── number_RevNumberPagelabelEmbeddedpluralLongordinal.txt │ ├── number_RevNumberPagelabelEmbeddedpluralOrdinal.txt │ ├── number_RevNumberPagelabelEmbeddedpluralPlain.txt │ ├── number_RevNumberPagelabelEmbeddedpluralRoman.txt │ ├── number_RevNumberPagelabelMultipleLongordinal.txt │ ├── number_RevNumberPagelabelMultipleOrdinal.txt │ ├── number_RevNumberPagelabelMultiplePlain.txt │ ├── number_RevNumberPagelabelMultipleRoman.txt │ ├── number_RevNumberPagelabelRangeLongordinal.txt │ ├── number_RevNumberPagelabelRangeOrdinal.txt │ ├── number_RevNumberPagelabelRangePlain.txt │ ├── number_RevNumberPagelabelRangeRoman.txt │ ├── number_RevNumberPagelabelSingleLongordinal.txt │ ├── number_RevNumberPagelabelSingleOrdinal.txt │ ├── number_RevNumberPagelabelSinglePlain.txt │ ├── number_RevNumberPagelabelSingleRoman.txt │ ├── number_RomanUpperCase.txt │ ├── number_Substring.txt │ ├── number_SuppressLabelOnFirst.txt │ ├── number_WithDelimiter.txt │ ├── parallel_Bibliography.txt │ ├── parallel_BrokenParallel.txt │ ├── parallel_CrossCitationIbidOnInsert.txt │ ├── parallel_FrenchCaseAndComments.txt │ ├── parallel_HackedChicago.txt │ ├── parallel_JournalArticleReverse.txt │ ├── parallel_JournalArticleSimple.txt │ ├── parallel_LastToFirstOverride.txt │ ├── parallel_LongParallel.txt │ ├── parallel_MatchAll.txt │ ├── parallel_MultiTough.txt │ ├── parallel_NewZealand.txt │ ├── parallel_NoRepeat.txt │ ├── parallel_ProceduralHistory.txt │ ├── parallel_SubsequentDiffers.txt │ ├── parallel_SuppressYearIfSuppressedInFirstCite.txt │ ├── parallel_TrailingIbid.txt │ ├── parallel_TreatiesMcGill.txt │ ├── parallel_VendorNeutralSuppression.txt │ ├── plural_AffiliationSpoofingIsPluralWithNames.txt │ ├── plural_IsPluralWithNames.txt │ ├── position_IbidSeparateCiteSameNoteCompactPrefix.txt │ ├── position_IbidWithPrefixFullStopCompactPrefix.txt │ ├── position_NearNoteOnly.txt │ ├── position_NearNoteTrue.txt │ ├── position_SubsequentInTextWithNote1.txt │ ├── position_SubsequentInTextWithNote2.txt │ ├── position_SubsequentInTextWithNote3.txt │ ├── position_SubsequentInTextWithNote4.txt │ ├── position_SubsequentInTextWithNote5.txt │ ├── position_SubsequentInTextWithNote6.txt │ ├── quotes_PunctuationMacro.txt │ ├── range_PageMinimal.txt │ ├── sort_BibliographyNosortOption.txt │ ├── sort_CitationEdit.txt │ ├── sort_CitationNumberSecondaryDescendingViaMacroBibliography.txt │ ├── sort_CitationNumberSecondaryDescendingViaMacroCitation.txt │ ├── sort_CitationNumberSecondaryDescendingViaVariableBibliography.txt │ ├── sort_CitationNumberSecondaryDescendingViaVariableCitation.txt │ ├── sort_CitationUnsorted.txt │ ├── sort_LosAngelesPoliceDepartment1.txt │ ├── sort_LosAngelesPoliceDepartment2.txt │ ├── sort_LosAngelesPoliceDepartment3.txt │ ├── sort_NumericVariables.txt │ ├── sort_WithMacro.txt │ ├── spaces_Doubles.txt │ ├── spaces_ExplicitDoubleSpaceDelimiter.txt │ ├── spaces_ExplicitDoubleSpacePrefix.txt │ ├── spaces_ExplicitDoubleSpaceSuffix.txt │ ├── spaces_ParentalDelimiterPrefix.txt │ ├── spaces_ParentalDelimiterPrefixPrefix.txt │ ├── spaces_ParentalPrefixPrefix.txt │ ├── spaces_ParentalSuffixDelimiter.txt │ ├── spaces_ParentalSuffixPrefixDownhill.txt │ ├── spaces_ParentalSuffixPrefixOverTheHill.txt │ ├── spaces_ParentalSuffixPrefixUphill.txt │ ├── spaces_ParentalSuffixSuffix.txt │ ├── spaces_ParentalSuffixSuffixDelimiter.txt │ ├── spaces_Prefix.txt │ ├── spaces_SiblingDelimiterPrefix.txt │ ├── spaces_SiblingSuffixDelimiter.txt │ ├── spaces_SiblingSuffixPrefix.txt │ ├── statute_Backref.txt │ ├── style-hhkk_Style.txt │ ├── style_CmsFull1.txt │ ├── sys_VariableWrapper.txt │ ├── test_cms.txt │ ├── textcase_AllUpper.txt │ ├── textcase_AllVanilla.txt │ ├── textcase_LocaleUnicodeWithVariant.txt │ ├── textcase_NonEnglish.txt │ ├── variables_CollectionTitleShort.txt │ ├── variables_CollectionTitleShort2.txt │ ├── variables_ShortForm.txt │ ├── variables_TitleShortOnAbbrevWithTitle.txt │ ├── variables_TitleShortOnAbbrevWithTitleCondition.txt │ ├── variables_TitleShortOnAbbrevWithTitleGroup.txt │ ├── wrappers_DOI.txt │ └── wrappers_URL.txt └── processor │ └── bibliographyTest.js ├── package-lock.json ├── package.json ├── package.template ├── src ├── .jshintrc ├── api_bibliography.js ├── api_cite.js ├── api_control.js ├── api_update.js ├── attributes.js ├── build.js ├── disambig_citations.js ├── disambig_cites.js ├── disambig_names.js ├── formats.js ├── formatters.js ├── load.js ├── node_alternative.js ├── node_alternativetext.js ├── node_bibliography.js ├── node_choose.js ├── node_citation.js ├── node_comment.js ├── node_condition.js ├── node_conditions.js ├── node_date.js ├── node_datepart.js ├── node_else.js ├── node_elseif.js ├── node_etal.js ├── node_group.js ├── node_if.js ├── node_info.js ├── node_institution.js ├── node_institutionpart.js ├── node_intext.js ├── node_key.js ├── node_label.js ├── node_layout.js ├── node_macro.js ├── node_name.js ├── node_namepart.js ├── node_names.js ├── node_number.js ├── node_sort.js ├── node_substitute.js ├── node_text.js ├── obj_ambigconfig.js ├── obj_blob.js ├── obj_number.js ├── obj_token.js ├── print.js ├── print_zotero.js ├── queue.js ├── registry.js ├── sort.js ├── stack.js ├── state.js ├── system.js ├── test_runner.js ├── util.js ├── util_citationlabel.js ├── util_conditions.js ├── util_date.js ├── util_datenode.js ├── util_dateparser.js ├── util_dates.js ├── util_disambig.js ├── util_flipflop.js ├── util_integration.js ├── util_label.js ├── util_locale.js ├── util_locale_sniff.js ├── util_modules.js ├── util_name_particles.js ├── util_names.js ├── util_names_common.js ├── util_names_constraints.js ├── util_names_disambig.js ├── util_names_divide.js ├── util_names_etal.js ├── util_names_etalconfig.js ├── util_names_join.js ├── util_names_output.js ├── util_names_render.js ├── util_names_tests.js ├── util_names_truncate.js ├── util_nodes.js ├── util_number.js ├── util_page.js ├── util_parallel.js ├── util_processor.js ├── util_publishers.js ├── util_sort.js ├── util_static_locator.js ├── util_substitute.js ├── util_transform.js ├── xmldom.js └── xmljson.js └── tools ├── CHARS.py ├── CONV.py ├── LOCALE_INSERT.sh ├── REPLACE.sh ├── absorb-styles.py ├── dates.txt ├── getIANA.sh ├── language-subtag-registry ├── makedatetests.py ├── makejson.py └── populate.sh /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | # These are supported funding model platforms 2 | 3 | github: # Replace with up to 4 GitHub Sponsors-enabled usernames e.g., [user1, user2] 4 | patreon: user?u=7258128 # Replace with a single Patreon username 5 | open_collective: # Replace with a single Open Collective username 6 | ko_fi: # Replace with a single Ko-fi username 7 | tidelift: # Replace with a single Tidelift platform-name/package-name e.g., npm/babel 8 | community_bridge: # Replace with a single Community Bridge project-name e.g., cloud-foundry 9 | liberapay: # Replace with a single Liberapay username 10 | issuehunt: # Replace with a single IssueHunt username 11 | otechie: # Replace with a single Otechie username 12 | custom: # Replace with up to 4 custom sponsorship URLs e.g., ['link1', 'link2'] 13 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI tests 2 | on: [push] 3 | jobs: 4 | test: 5 | runs-on: ubuntu-latest 6 | steps: 7 | - name: Check out repository code 8 | uses: actions/checkout@v2 9 | with: 10 | submodules: recursive 11 | - name: install node 12 | uses: actions/setup-node@v2 13 | with: 14 | node-version: 16.x 15 | - run: npm install -g mocha 16 | - run: npm install -g citeproc-test-runner 17 | - run: cslrun -a --reporter spec 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *~ 2 | .cslTestFixtures 3 | ignored 4 | node_modules 5 | test 6 | .cslValidationPos 7 | cslrun.yaml -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "fixtures/std"] 2 | path = fixtures/std 3 | url = https://github.com/citation-style-language/test-suite 4 | [submodule "locale"] 5 | path = locale 6 | url = https://github.com/citation-style-language/locales.git 7 | [submodule "csl-schemata"] 8 | path = csl-schemata 9 | url = https://github.com/Juris-M/schema.git 10 | [submodule "docs"] 11 | path = docs 12 | url = https://github.com/Juris-M/citeproc-js-docs.git 13 | [submodule "juris-modules"] 14 | path = juris-modules 15 | url = https://github.com/Juris-M/style-modules 16 | [submodule "fixtures/styles"] 17 | path = fixtures/styles 18 | url = https://github.com/Juris-M/jm-style-tests.git 19 | -------------------------------------------------------------------------------- /.hgignore: -------------------------------------------------------------------------------- 1 | syntax: regexp 2 | 3 | .*/run\.js 4 | clear.sh 5 | schemas.xml 6 | \.tar\.gz$ 7 | \.zip$ 8 | ^jshint_done.txt 9 | ^Diffs 10 | ^tools/jslint.* 11 | ^csl-locales$ 12 | ^locale$ 13 | /bundled$ 14 | /run$ 15 | UPLOAD.sh$ 16 | ^run-opt.js$ 17 | ^jing 18 | ^jsdoc.* 19 | ^stripped\.js 20 | ^REPLACE\.sh 21 | ^NAMES_ORIG.js 22 | ^\.emacs-desktop 23 | \.*\.result 24 | ^HOLD 25 | (^|.*/)\.svn 26 | .*~$ 27 | ^MIGRATION.txt 28 | ^all-styles 29 | /test_load_all_styles.js$ 30 | \.pyc$ 31 | /COUNTOPTS.sh 32 | ^csl$ 33 | ^csl-doc$ 34 | ^tmp.html$ 35 | /LOCALE_INSERT.txt$ 36 | /citeproc-doc.tar.gz$ 37 | .*\.jsxdr$ 38 | ^citeproc-doc.tar.gz$ 39 | ^citeproc_zotero.js$ 40 | ^std$ 41 | ^.*/styletests$ 42 | -------------------------------------------------------------------------------- /.hgsub: -------------------------------------------------------------------------------- 1 | style = [git]https://github.com/zotero/bundled-styles.git 2 | -------------------------------------------------------------------------------- /.hgsubstate: -------------------------------------------------------------------------------- 1 | f18898c58d69fd3fad40e2b5e60c4f024b11bac7 style 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2009-2019 Frank Bennett 2 | 3 | This program is free software: you can redistribute it and/or 4 | modify it under EITHER 5 | 6 | * the terms of the Common Public Attribution License (CPAL) as 7 | published by the Open Source Initiative, either version 1 of 8 | the CPAL, or (at your option) any later version; OR 9 | 10 | * the terms of the GNU Affero General Public License (AGPL) 11 | as published by the Free Software Foundation, either version 12 | 3 of the AGPL, or (at your option) any later version. 13 | 14 | This program is distributed in the hope that it will be useful, 15 | but WITHOUT ANY WARRANTY; without even the implied warranty of 16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 17 | Affero General Public License for more details. 18 | 19 | You should have received copies of the Common Public Attribution 20 | License and of the GNU Affero General Public License along with 21 | this program. If not, see or 22 | respectively. 23 | -------------------------------------------------------------------------------- /attic/APPLY_LICENSE.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import re,os,sys 4 | 5 | mypath = os.path.split(sys.argv[0])[0] 6 | os.chdir(mypath) 7 | 8 | REX = "(?sm)^^(/\*.*?^\s*\*/\n*)(.*)" 9 | 10 | m = re.match(REX, open("../src/load.js").read()) 11 | 12 | if m: 13 | license = m.group(1).strip() 14 | else: 15 | print "Oops, no license in csl.js" 16 | sys.exit() 17 | 18 | print license 19 | 20 | def process_file(path,file): 21 | filepath = "%s/%s" % (path,file) 22 | if not filepath.endswith(".js") and not filepath.endswith(".txt") and not filepath.endswith(".json") and not filepath.endswith("README.txt"): return 23 | text = open(filepath).read() 24 | oldtext = text 25 | m = re.match(REX,text) 26 | if m: 27 | text = "%s\n%s" % (license, m.group(2)) 28 | else: 29 | text = "%s%s" % (license, text) 30 | if text.strip() != oldtext.strip(): 31 | open("%s" %(filepath),"w+").write(text) 32 | 33 | for path in ["..", "../src", "../tests/std", "../tests/std/humans","../tests/std/bundled", "../tests/std/machines","../tests/citeproc-js"]: 34 | for file in os.listdir( path ): 35 | process_file(path,file) 36 | 37 | print "Done" 38 | 39 | -------------------------------------------------------------------------------- /attic/BENCHMARKS.txt: -------------------------------------------------------------------------------- 1 | Hardly scientific. The test suite is DOM-intensive, whereas after 2 | initial configuration of a style, the processor runs in pure 3 | Javascript, with zero DOM access. Nonetheless, the following 4 | numbers give at least some idea of relative performance: 5 | 6 | For 426 tests: 7 | 8 | ============ ================== 9 | JS Engine Time to completion 10 | ============ ================== 11 | Rhino 60 seconds 12 | Spidermonkey 50 seconds 13 | Tracemonkey 24 seconds 14 | ============ ================== 15 | 16 | -------------------------------------------------------------------------------- /attic/CONVERT_LOCALES.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | 3 | import sys,os,re 4 | 5 | def setpath(): 6 | mypath = os.path.split(sys.argv[0])[0] 7 | if len(mypath): 8 | os.chdir(mypath) 9 | 10 | def getfiles(): 11 | files = [] 12 | for f in os.listdir("locale"): 13 | if not f.endswith(".xml"): 14 | continue 15 | files.append( "locale/%s" % f ) 16 | return files 17 | 18 | top = """ 19 | 20 | 21 | """.strip() 22 | 23 | bottom = """ 24 | 25 | 26 | """.strip() 27 | 28 | def conv(path): 29 | str = open(path).read() 30 | m = re.match("(?m)(?s).*]*xml:lang=\"([^\"]+)\"[^>]*>.*",str) 31 | if m: 32 | lang = m.group(1) 33 | print lang 34 | str = re.sub("(?m)(?s)]+>",top %lang,str) 35 | str = re.sub("(?m)(?s).*",bottom,str) 36 | #print str 37 | open(path,"w+").write(str) 38 | else: 39 | print "Oops. term/locale elements not found." 40 | sys.exit() 41 | 42 | if __name__ == "__main__": 43 | setpath() 44 | for path in getfiles(): 45 | n = conv(path) 46 | #break 47 | print "Done." 48 | -------------------------------------------------------------------------------- /attic/COUNT_ENTITIES_ACROSS_ALL_STYLES.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import re,sys,os 4 | 5 | entityMap = {} 6 | for fn in os.listdir("."): 7 | if not fn.endswith(".csl"): continue 8 | sys.stdout.write(".") 9 | sys.stdout.flush() 10 | fh = open(fn) 11 | while 1: 12 | line = fh.readline() 13 | if not line: break 14 | line = line.strip() 15 | entities = re.findall("&([^;]{2,6});", line) 16 | for entity in entities: 17 | if not entity.startswith("#"): 18 | if not entityMap.has_key(entity): 19 | entityMap[entity] = 0 20 | entityMap[entity] += 1 21 | 22 | for entity in entityMap: 23 | print("%s: %s") % (entity, entityMap[entity]) 24 | -------------------------------------------------------------------------------- /attic/EXTRA_DATE_HACK_1_0.patch: -------------------------------------------------------------------------------- 1 | --- cite.js.orig 2009-03-20 21:36:53.000000000 +0900 2 | +++ cite.js 2009-09-08 07:09:26.000000000 +0900 3 | @@ -2013,6 +2013,7 @@ 4 | "ISBN" : "ISBN", 5 | "call-number":"callNumber", 6 | "note":"extra", 7 | + "extra-date":"extraDate", 8 | "number":"number", 9 | "references":"history" 10 | }, 11 | @@ -2052,7 +2053,23 @@ 12 | } 13 | 14 | for each(var zoteroField in zoteroFields) { 15 | - var value = this.zoteroItem.getField(zoteroField, false, true).toString(); 16 | + if (zoteroField == "extraDate"){ 17 | + var value = this.zoteroItem.getField("extra", false, true).toString(); 18 | + var m = value.match(/^\[([0-9]+)\].*/); 19 | + if (m){ 20 | + value = m[1]; 21 | + } else { 22 | + value = ""; 23 | + } 24 | + } else if (zoteroField == "extra") { 25 | + var value = this.zoteroItem.getField(zoteroField, false, true).toString(); 26 | + var m = value.match(/^\[[0-9]+\]\s+(.*)/); 27 | + if (m){ 28 | + value = m[1]; 29 | + } 30 | + } else { 31 | + var value = this.zoteroItem.getField(zoteroField, false, true).toString(); 32 | + } 33 | if(value != "") { 34 | // Strip enclosing quotes 35 | if(value.match(Zotero.CSL._quotedRegexp)) { 36 | -------------------------------------------------------------------------------- /attic/FIXLOCALE.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | 4 | import re,os 5 | 6 | rex = re.compile("(.*\s*)()(\s*\n\s*)(]+>)(.*)()(\s*\n\s*)()(.*)",re.M|re.S) 7 | 8 | for filename in os.listdir("./locale"): 9 | if not filename.endswith(".xml"): continue 10 | 11 | fulltext = open("locale/%s" % filename).read() 12 | groups = rex.match(fulltext) 13 | 14 | if groups: 15 | print filename 16 | fulltext = "%s%s%s%s%s%s%s%s%s" % (groups.group(1), 17 | groups.group(4), 18 | groups.group(3), 19 | groups.group(2), 20 | groups.group(5), 21 | groups.group(8), 22 | groups.group(7), 23 | groups.group(6), 24 | groups.group(9)) 25 | 26 | open("locale/%s" % filename,"w+").write(fulltext) 27 | -------------------------------------------------------------------------------- /attic/Unicode-Transpiler.txt: -------------------------------------------------------------------------------- 1 | We're going to need this: 2 | 3 | https://github.com/mathiasbynens/regexpu 4 | 5 | Thank you, Mathias. 6 | -------------------------------------------------------------------------------- /attic/citeproc-js-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juris-M/citeproc-js/f88a47e6d143ace8a79569388534ff8ad9205da0/attic/citeproc-js-logo.png -------------------------------------------------------------------------------- /attic/citeproc-js-logo.xcf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juris-M/citeproc-js/f88a47e6d143ace8a79569388534ff8ad9205da0/attic/citeproc-js-logo.xcf -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/ambigconfig.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.ambigconfig"); 2 | 3 | doh.register("citeproc_js.ambigconfig", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var obj = new CSL.AmbigConfig(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | function testValues() { 18 | var obj = new CSL.AmbigConfig(); 19 | doh.assertEqual("object", typeof obj.maxvals); 20 | doh.assertEqual(0, obj.maxvals.length); 21 | doh.assertEqual("object", typeof obj.names); 22 | doh.assertEqual(0, obj.names.length); 23 | } 24 | ]); 25 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/blob.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.blob"); 2 | 3 | doh.register("citeproc_js.blob", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var obj = new CSL.Blob(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | function testEmptyStringValue() { 18 | var obj = new CSL.Blob(); 19 | doh.assertEqual("", obj.strings.prefix); 20 | }, 21 | function testEmptyBlobsValue() { 22 | var obj = new CSL.Blob(); 23 | doh.assertEqual("object", typeof obj.blobs); 24 | doh.assertEqual(0, obj.blobs.length); 25 | try { 26 | obj.blobs.push("hello"); 27 | var res = "Success"; 28 | } catch (e){ 29 | var res = e; 30 | } 31 | doh.assertEqual("Success", res); 32 | }, 33 | function testTokenStringsConfig() { 34 | var token = new CSL.Token("dummy"); 35 | token.strings.prefix = "[X]"; 36 | var obj = new CSL.Blob(token); 37 | doh.assertEqual("[X]", obj.strings.prefix); 38 | }, 39 | function testTokenDecorationsConfig() { 40 | var token = new CSL.Token("dummy"); 41 | token.decorations = ["hello"]; 42 | var obj = new CSL.Blob(token); 43 | doh.assertEqual(1, obj.decorations.length); 44 | doh.assertEqual("hello", obj.decorations[0]); 45 | }, 46 | ]); 47 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/build.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.build"); 2 | 3 | var myxml = ''; 4 | 5 | // var s = dec("Šťěpán ČESNEK"); 6 | // print(escape(s)); 7 | 8 | doh.register("citeproc_js.build", [ 9 | 10 | function testInstantiation() { 11 | function testme () { 12 | try { 13 | var sys = new RhinoTest(); 14 | var obj = new CSL.Engine(sys,myxml); 15 | return "Success"; 16 | } catch (e) { 17 | return e; 18 | } 19 | } 20 | var res = testme(); 21 | doh.assertEqual( "Success", res ); 22 | }, 23 | function testValue() { 24 | var sys = new RhinoTest(); 25 | var obj = new CSL.Engine(sys,myxml); 26 | doh.assertEqual("object", typeof obj.build.macro_stack); 27 | } 28 | ]); 29 | 30 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/datenumericconfig.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.datenumericconfig"); 2 | 3 | CSL.debug = print; 4 | 5 | doh.register("tests.datenumericconfig", [ 6 | function test_MericanDefault() { 7 | var parser = new CSL.DateParser; 8 | var res = parser.parse("1-12-2000"); 9 | doh.assertEqual(1, res.month); 10 | }, 11 | function test_YurupStyle() { 12 | var parser = new CSL.DateParser; 13 | parser.setOrderDayMonth(); 14 | var res = parser.parse("1-12-2000"); 15 | doh.assertEqual(12, res.month); 16 | } 17 | ]); 18 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/dateparsetoarray.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.dateparsetoarray"); 2 | 3 | var keycount = function(obj){ 4 | var c=0; 5 | for (pos in obj) { 6 | c+=1; 7 | } 8 | return c; 9 | }; 10 | 11 | doh.register("tests.dateparsetoarray", [ 12 | function test_dateparsetoarray029() { 13 | var parser = new CSL.DateParser; 14 | parser.returnAsArray(); 15 | var res = parser.parse("Aug 15 2000 - Aug 20 2000"); 16 | doh.assertEqual("2000", res["date-parts"][1][0]); 17 | doh.assertEqual("8", res["date-parts"][0][1]); 18 | doh.assertEqual("20", res["date-parts"][1][2]); 19 | doh.assertEqual("2000", res["date-parts"][0][0]); 20 | doh.assertEqual("8", res["date-parts"][1][1]); 21 | doh.assertEqual("15", res["date-parts"][0][2]); 22 | doh.assertEqual(1, keycount(res) ); 23 | } 24 | ]); 25 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/formats.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.formats"); 2 | 3 | doh.register("citeproc_js.formats", [ 4 | 5 | function testStringyDefs() { 6 | doh.assertEqual( '%%STRING%%', CSL.Output.Formats.html["@font-weight/bold"] ); 7 | }, 8 | 9 | function testFunctionDefs() { 10 | doh.assertEqual( "function", typeof CSL.Output.Formats.html["@passthrough/true"] ); 11 | } 12 | ]); 13 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/formatters.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.formatters"); 2 | 3 | 4 | doh.register("citeproc_js.formatters", [ 5 | function testIfItWorksAtAll() { 6 | function testme () { 7 | try { 8 | var fmt = CSL.Utilities; 9 | return "Success"; 10 | } catch (e) { 11 | return "Instantiation failure: " + e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | 18 | function testCaps() { 19 | doh.assertEqual( 'CAPS', CSL.Output.Formatters.uppercase(undefined,"caps") ); 20 | }, 21 | 22 | ]); 23 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/fun.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.fun"); 2 | 3 | doh.register("citeproc_js.fun", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var obj = new CSL.Engine.Fun(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | ]); 18 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/localesniff.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.localesniff"); 2 | 3 | // var s = dec("Šťěpán ČESNEK"); 4 | // print(escape(s)); 5 | 6 | doh.register("citeproc_js.build", [ 7 | 8 | function testSniff() { 9 | function testme () { 10 | var myxml = ; 11 | try { 12 | var localeNames = CSL.getLocaleNames(myxml); 13 | localeNames = localeNames.join(","); 14 | return localeNames; 15 | } catch (e) { 16 | return e; 17 | } 18 | } 19 | var res = testme(); 20 | doh.assertEqual( res, "en" ); 21 | } 22 | ]); 23 | 24 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/opt.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.opt"); 2 | 3 | doh.register("citeproc_js.opt", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var obj = new CSL.Engine.Opt(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | 18 | function testValue() { 19 | var obj = new CSL.Engine.Opt(); 20 | doh.assertNotEqual( "undefined", typeof obj.has_disambiguate ); 21 | }, 22 | 23 | ]); 24 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/output.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.output"); 2 | 3 | 4 | doh.register("citeproc_js.output", [ 5 | 6 | function testInstantiateOutput() { 7 | function testme () { 8 | try { 9 | var fmt = CSL.Output; 10 | return "Success"; 11 | } catch (e) { 12 | return "Instantiation failure: " + e; 13 | } 14 | } 15 | var res = testme(); 16 | doh.assertEqual( "Success", res ); 17 | }, 18 | 19 | ]); 20 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/registry.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.registry"); 2 | 3 | doh.register("citeproc_js.registry", [ 4 | function testInstantiation(){ 5 | try { 6 | var sys = new RhinoTest(); 7 | var engine = new CSL.Engine(sys,""); 8 | var obj = new CSL.Registry(engine); 9 | var res = "Success"; 10 | } catch (e){ 11 | var res = e; 12 | } 13 | doh.assertEqual( "Success", res); 14 | }, 15 | function testItemReshuffle(){ 16 | var sys = new RhinoTest(); 17 | var engine = new CSL.Engine(sys,""); 18 | sys._cache["ITEM-1"] = { id:"ITEM-1", title:"Book A"}; 19 | sys._cache["ITEM-2"] = { id:"ITEM-1", title:"Book B"}; 20 | sys._cache["ITEM-3"] = { id:"ITEM-1", title:"Book C"}; 21 | sys._cache["ITEM-4"] = { id:"ITEM-1", title:"Book D"}; 22 | sys._cache["ITEM-5"] = { id:"ITEM-1", title:"Book E"}; 23 | var res = engine.updateItems(["ITEM-1","ITEM-2","ITEM-3","ITEM-4","ITEM-5"]); 24 | doh.assertEqual("ITEM-1|ITEM-2|ITEM-3|ITEM-4|ITEM-5",res.join("|")); 25 | var res = engine.updateItems(["ITEM-1","ITEM-4","ITEM-5","ITEM-2","ITEM-3"]); 26 | doh.assertEqual("ITEM-1|ITEM-4|ITEM-5|ITEM-2|ITEM-3",res.join("|")); 27 | }, 28 | ]); 29 | 30 | var x = [ 31 | ] -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/render.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.render"); 2 | 3 | doh.register("citeproc_js.render", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var out = new CSL.Render(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | 18 | ]); 19 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/romanizer.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.romanizer"); 2 | 3 | 4 | doh.register("citeproc_js.romanizer", [ 5 | function testRomanize(){ 6 | var romanizer = new CSL.Util.Romanizer(); 7 | doh.assertEqual("xiv", romanizer.format(14)); 8 | }, 9 | ]); 10 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/slug.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.slug"); 2 | 3 | 4 | doh.registerGroup("citeproc_js.slug", 5 | [ 6 | function testSlug(){ 7 | var xml = ""; 19 | var result = citeproc_js.slug.makeBib(xml, [{id: "Item-1"}]); 20 | doh.assertEqual("
[{SLUG}]
\n", result[1][0]); 21 | doh.assertEqual("
[{SLUG}]
\n", result[1][1]); 22 | } 23 | ], 24 | function(){ //setup 25 | citeproc_js.slug.makeBib = function(myxml,items){ 26 | var sys = new RhinoTest(items); 27 | sys._cache["Item-1"] = { id: "Item-1", title: "Title One" }; 28 | sys._cache["Item-2"] = { id: "Item-2", title: "Title Two" }; 29 | var style = new CSL.Engine(sys,myxml); 30 | style.updateItems(["Item-1", "Item-2"]); 31 | return style.makeBibliography("{SLUG}"); 32 | }; 33 | }, 34 | function(){ // teardown 35 | } 36 | 37 | ); 38 | 39 | /* 40 | */ -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/suffixator.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.suffixator"); 2 | 3 | 4 | doh.register("citeproc_js.suffixator", [ 5 | function testSuffixize(){ 6 | 7 | var list = "a,b,c,d"; 8 | var suffixator = new CSL.Util.Suffixator(list); 9 | 10 | var res = suffixator.get_suffixes(8,list); 11 | doh.assertEqual("ba", res[(res.length-1)]); 12 | 13 | var res = suffixator.get_suffixes(34,list); 14 | doh.assertEqual("adc", res[(res.length-1)]); 15 | 16 | var res = suffixator.get_suffixes(350,list); 17 | doh.assertEqual("aaacc", res[(res.length-1)]); 18 | 19 | var res = suffixator.get_suffixes(351,list); 20 | doh.assertEqual("aaacd", res[(res.length-1)]); 21 | }, 22 | function testGetSuffix(){ 23 | var list = "a,b,c,d"; 24 | var suffixator = new CSL.Util.Suffixator(list); 25 | doh.assertEqual("c",suffixator.format(2)); 26 | }, 27 | ]); 28 | 29 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/sys_rhino_load.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.sys_rhino_load"); 2 | 3 | var myitem = { 4 | "id":"simple-western-name-1", 5 | "type": "book", 6 | "author": [ 7 | { "name":"Doe, John", "uri":"http://people.org/doej" } 8 | ], 9 | "issued": {"year": "1965", "month":"6", "day":"1"}, 10 | "title": "His Anonymous Life" 11 | }; 12 | 13 | 14 | doh.register("citeproc_js.sys_rhino_load", [ 15 | 16 | function testInstantiationRhinoTestEmpty() { 17 | function testme () { 18 | try { 19 | var obj = new RhinoTest(); 20 | return "Success"; 21 | } catch (e) { 22 | return e; 23 | } 24 | } 25 | var res = testme(); 26 | doh.assertEqual( "Success", res ); 27 | }, 28 | 29 | function testInstantiationRhinoTestLoad() { 30 | function testme () { 31 | try { 32 | var obj = new RhinoTest(myitem); 33 | return "Success"; 34 | } catch (e) { 35 | return e; 36 | } 37 | } 38 | var res = testme(); 39 | doh.assertEqual( "Success", res ); 40 | }, 41 | 42 | ]); 43 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/sys_stdrhino_load.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.sys_stdrhino_load"); 2 | 3 | doh.register("citeproc_js.sys_stdrhino_load", [ 4 | 5 | function testInstantiationTestEmpty() { 6 | function testme () { 7 | try { 8 | var obj = new StdRhinoTest(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | 18 | function testInstantiationTestLoad() { 19 | function testme () { 20 | try { 21 | var obj = new StdRhinoTest("name_WesternSimple"); 22 | return "Success"; 23 | } catch (e) { 24 | return e; 25 | } 26 | } 27 | var res = testme(); 28 | doh.assertEqual( "Success", res ); 29 | }, 30 | 31 | ]); 32 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/sys_stdspidermonkey_load.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.sys_stdspidermonkey_load"); 2 | doh.register("citeproc_js.sys_stdspidermonkey_load", [ 3 | 4 | function testInstantiationRhinoTestEmpty() { 5 | function testme () { 6 | try { 7 | var obj = new RhinoTest(); 8 | return "Success"; 9 | } catch (e) { 10 | return e; 11 | } 12 | } 13 | var res = testme(); 14 | doh.assertEqual( "Success", res ); 15 | }, 16 | 17 | function testInstantiationRhinoTestLoad() { 18 | function testme () { 19 | try { 20 | var obj = new RhinoTest(["simple-western-name-1"]); 21 | return "Success"; 22 | } catch (e) { 23 | return e; 24 | } 25 | } 26 | var res = testme(); 27 | doh.assertEqual( "Success", res ); 28 | }, 29 | 30 | function testInstantiationStdRhinoTest() { 31 | function testme () { 32 | try { 33 | var obj = new StdRhinoTest("name_WesternTwoAuthors"); 34 | return "Success"; 35 | } catch (e) { 36 | return e; 37 | } 38 | } 39 | var res = testme(); 40 | doh.assertEqual( "Success", res ); 41 | }, 42 | 43 | ]); 44 | -------------------------------------------------------------------------------- /attic/citeproc-js.legacy/tmp.js: -------------------------------------------------------------------------------- 1 | dojo.provide("citeproc_js.tmp"); 2 | 3 | doh.register("citeproc_js.tmp", [ 4 | 5 | function testInstantiation() { 6 | function testme () { 7 | try { 8 | var obj = new CSL.Engine.Tmp(); 9 | return "Success"; 10 | } catch (e) { 11 | return e; 12 | } 13 | } 14 | var res = testme(); 15 | doh.assertEqual( "Success", res ); 16 | }, 17 | 18 | ]); 19 | -------------------------------------------------------------------------------- /attic/from-docs-substitutions.txt: -------------------------------------------------------------------------------- 1 | .. |CCBYSA| raw:: html 2 | 3 |
4 | 5 | .. |CCBYSA-SUBDIR| raw:: html 6 | 7 |
8 | 9 | -------------------------------------------------------------------------------- /attic/initials.patch: -------------------------------------------------------------------------------- 1 | diff -r 425a49e6ae67 src/util_names.js 2 | --- a/src/util_names.js Mon Oct 10 10:32:21 2011 +0000 3 | +++ b/src/util_names.js Tue Oct 11 23:31:40 2011 +0000 4 | @@ -160,12 +160,15 @@ 5 | 6 | var isAbbrev = []; 7 | for (i = 0, ilen = namelist.length; i < ilen; i += 1) { 8 | - if (namelist[i].length > 1 && namelist[i].slice(-1) === ".") { 9 | + var abbrevFlag = false; 10 | + if (namelist[i].length && namelist[i].slice(-1) === ".") { 11 | namelist[i] = namelist[i].slice(0, -1); 12 | - isAbbrev.push(true); 13 | - } else { 14 | - isAbbrev.push(false); 15 | + abbrevFlag = true; 16 | } 17 | + if (!abbrevFlag && namelist[i].length === 1 && namelist[i].toUpperCase() === namelist[i]) { 18 | + abbrevFlag = true; 19 | + } 20 | + isAbbrev.push(abbrevFlag); 21 | } 22 | // (3) If initialize="false" then: 23 | // (a) Do the thing below, but only pushing terminator; or else 24 | @@ -174,6 +177,7 @@ 25 | for (i = 0, ilen = namelist.length; i < ilen; i += 2) { 26 | if (isAbbrev[i]) { 27 | if (i < namelist.length - 2) { 28 | + 29 | namelist[i + 1] = ""; 30 | // If terminator does not end in a space, 31 | // and this is a ROMANESQUE, 32 | -------------------------------------------------------------------------------- /attic/libmozjs.conf: -------------------------------------------------------------------------------- 1 | # Tracemonkey js 2 | /home/bennett/src/jslibs/libs/js/Linux_opt_32 -------------------------------------------------------------------------------- /attic/name_MarkupBug.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | bibliography 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 |
9 |
Doe, J. Q.
10 |
11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 40 | 41 | 42 | <<===== CSL =====<< 43 | 44 | 45 | >>===== INPUT =====>> 46 | [ 47 | { 48 | "author": [ 49 | { 50 | "family": "Doe", 51 | "given": "John Quiggly" 52 | } 53 | ], 54 | "id": "ITEM-1", 55 | "type": "book" 56 | } 57 | ] 58 | <<===== INPUT =====<< 59 | -------------------------------------------------------------------------------- /attic/name_ParsedCommaDelimitedDroppingParticleNormalOrderingWithAffixes.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | François Hédelin (abbé d’Aubignac) 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 33 | <<===== CSL =====<< 34 | 35 | 36 | >>===== INPUT =====>> 37 | [ 38 | { 39 | "author": [ 40 | { 41 | "family": "Aubignac", 42 | "given": "François Hédelin, abbé d'" 43 | } 44 | ], 45 | "id": "ITEM-1", 46 | "type": "book" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /attic/name_ParsedCommaDelimitedDroppingParticleNormalOrderingWithoutAffixes.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | François Hédelin abbé d’Aubignac 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "author": [ 38 | { 39 | "family": "Aubignac", 40 | "given": "François Hédelin, abbé d'" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /attic/run-rhino.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | setlocal 3 | 4 | echo Started test-run 5 | set starttime=%time% 6 | 7 | cd %~dp0 8 | 9 | set RHINO=%~dp0rhino\js-1.7R1.jar 10 | set DOJO=%~dp0dojo\dojo\dojo.js 11 | set DOH=%~dp0dojo\util\doh\ 12 | 13 | set TARGET=%~dp0tests\javascript\runner_rhino.js 14 | 15 | java -client -jar %RHINO% %TARGET% dojoUrl=%DOJO% testModule="" 16 | 17 | echo Finished test-run 18 | echo Start Time = %starttime% 19 | echo End Time = %time% 20 | -------------------------------------------------------------------------------- /attic/run-rhino.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | if [ $(echo ${SHELL} | grep -c "bash") -eq "1" ]; then 4 | export LANG="C" 5 | else 6 | setenv LANG "en_US.UTF-8" 7 | fi 8 | 9 | START="$(date) <--------------START" 10 | cd $(dirname $0) 11 | RHINO="${PWD}"/rhino/js-1.7R2.jar 12 | DOJO="${PWD}"/dojo/dojo/dojo.js 13 | DOH="${PWD}"/dojo/util/doh/ 14 | 15 | TARGET="${PWD}"/tests/runners/rhino.js 16 | 17 | if [ "$1" != "" ]; then 18 | if [ "$2" != "" ]; then 19 | OPT="CSL_OPTIONS={set:\"$1\", fixture:\"$2\"}" 20 | echo $OPT > run-opt.js 21 | else 22 | echo USAGE: $0 '[<"std"|"custom"> ]' 23 | exit 1 24 | fi 25 | else 26 | echo "" > run-opt.js 27 | fi 28 | 29 | java -client -jar "${RHINO}" -opt 8 "${TARGET}" dojoUrl="${DOJO}" testModule="" 30 | 31 | rm -f run-opt.js 32 | rm -f run-opt.jsxdr 33 | 34 | echo $START 35 | echo $(date) \<--------------END 36 | -------------------------------------------------------------------------------- /attic/run-tracemonkey.sh: -------------------------------------------------------------------------------- 1 | 2 | #!/bin/sh 3 | 4 | if [ $(echo ${SHELL} | grep -c "bash") -eq "1" ]; then 5 | echo LANG in bash 6 | export LANG="en_US.UTF-8" 7 | else 8 | echo LANG in something else 9 | setenv LANG "en_US.UTF-8" 10 | fi 11 | 12 | START="$(date) <--------------START" 13 | cd $(dirname $0) 14 | TRACEMONKEY=/home/bennett/src/jslibs/Linux_32_opt/jshost 15 | DOJO="${PWD}"/dojo-sm/dojo/dojo.js 16 | DOH="${PWD}"/dojo-sm/util/doh/ 17 | 18 | TARGET="${PWD}"/tests/runners/tracemonkey.js 19 | 20 | if [ "$1" != "" ]; then 21 | if [ "$2" != "" ]; then 22 | OPT="CSL_OPTIONS={set:\"$1\", fixture:\"$2\"}" 23 | echo $OPT > run-opt.js 24 | else 25 | echo USAGE: $0 '[<"std"|"custom"> ]' 26 | exit 1 27 | fi 28 | else 29 | echo "" > run-opt.js 30 | fi 31 | 32 | "${TRACEMONKEY}" -u "${TARGET}" 33 | 34 | rm -f run-opt.js 35 | rm -f run-opt.jsxdr 36 | 37 | echo $START 38 | echo $(date) \<--------------END 39 | -------------------------------------------------------------------------------- /attic/scrape_dutch_particles.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | #-*- encoding: utf-8 -*- 3 | 4 | # Data source is the site linked here: 5 | # https://forums.zotero.org/discussion/30974/2/any-idea-why-an-a-author-comes-last-in-the-bibliography/2/#Item_26 6 | 7 | from lxml import etree 8 | htmlparser = etree.HTMLParser() 9 | tree = etree.parse(open("tussies.html"), htmlparser) 10 | 11 | nodes = tree.xpath('//li/strong') 12 | 13 | nodemap = {} 14 | nodelist = [] 15 | 16 | for node in nodes: 17 | nodemap[node.text.encode('utf-8').lower()] = True; 18 | 19 | for node in nodemap.keys(): 20 | nodelist.append(node) 21 | 22 | nodelist.sort() 23 | 24 | for node in nodelist: 25 | print node 26 | -------------------------------------------------------------------------------- /attic/speed.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | START="$(date) <--------------START" 3 | cd $(dirname $0) 4 | cd .. 5 | RHINO="${PWD}"/rhino/js-1.7R1.jar 6 | DOJO="${PWD}"/dojo/dojo/dojo.js 7 | DOH="${PWD}"/dojo/util/doh/ 8 | 9 | TARGET="${PWD}"/tests/test_speed.js 10 | 11 | java -client -jar "${RHINO}" "${TARGET}" dojoUrl="${DOJO}" testModule="" 12 | echo $START 13 | echo $(date) \<--------------END 14 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_Nada.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 16 | 17 | 18 | 19 | 20 | <<===== CSL =====<< 21 | 22 | 23 | >>===== INPUT =====>> 24 | [{ 25 | "id":"ITEM-1", 26 | "type": "book", 27 | "title": "Book A" 28 | }] 29 | <<===== INPUT =====<< 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_Nada2.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 16 | 17 | 18 | 19 | 20 | <<===== CSL =====<< 21 | 22 | 23 | >>===== INPUT =====>> 24 | [{ 25 | "id":"simple-western-name-1", 26 | "type": "book", 27 | "title": "Book A" 28 | }] 29 | <<===== INPUT =====<< 30 | 31 | 32 | 33 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_Nada3.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 22 | <<===== CSL =====<< 23 | 24 | 25 | >>===== INPUT =====>> 26 | [{ 27 | "id":"ITEM-1", 28 | "type": "book", 29 | "title": "Book A" 30 | }] 31 | <<===== INPUT =====<< 32 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_Nada4.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [{ 36 | "id":"simple-western-name-1", 37 | "type": "book", 38 | "title": "Book A" 39 | }] 40 | <<===== INPUT =====<< 41 | 42 | 43 | 44 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_NonNada.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | Book A 12 | <<===== RESULT =====<< 13 | 14 | 15 | >>===== CSL =====>> 16 | 17 | 18 | 19 | 20 | 21 | <<===== CSL =====<< 22 | 23 | 24 | >>===== INPUT =====>> 25 | [{ 26 | "id":"ITEM-1", 27 | "type": "book", 28 | "title": "Book A" 29 | }] 30 | <<===== INPUT =====<< 31 | -------------------------------------------------------------------------------- /attic/unused_tests/namespaces_NonNada2.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== SCHEMA =====>> 6 | 0.8 7 | <<===== SCHEMA =====<< 8 | 9 | 10 | >>===== RESULT =====>> 11 | Book A 12 | <<===== RESULT =====<< 13 | 14 | 15 | >>===== CSL =====>> 16 | 17 | 18 | 19 | 20 | 21 | <<===== CSL =====<< 22 | 23 | 24 | >>===== INPUT =====>> 25 | [{ 26 | "id":"ITEM-1", 27 | "type": "book", 28 | "title": "Book A" 29 | }] 30 | <<===== INPUT =====<< 31 | -------------------------------------------------------------------------------- /attic/unused_tests/terms_EmptyOverload.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== SCHEMA =====>> 7 | 0.9 8 | <<===== SCHEMA =====<< 9 | 10 | 11 | >>===== RESULT =====>> 12 | <<===== RESULT =====<< 13 | 14 | 15 | >>===== CSL =====>> 16 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "id":"ITEM-1", 44 | "type": "book", 45 | "author": [{"name":"Appleton, Victor"}], 46 | "title": "Tom Swift and His Electric Runabout", 47 | "issued": {"year":"1910"} 48 | } 49 | ] 50 | <<===== INPUT =====<< 51 | -------------------------------------------------------------------------------- /attic/unused_tests/terms_Missing.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== SCHEMA =====>> 7 | 0.9 8 | <<===== SCHEMA =====<< 9 | 10 | 11 | >>===== RESULT =====>> 12 | Bogus 13 | <<===== RESULT =====<< 14 | 15 | 16 | >>===== CSL =====>> 17 | 33 | <<===== CSL =====<< 34 | 35 | 36 | >>===== INPUT =====>> 37 | [ 38 | { 39 | "id":"ITEM-1", 40 | "type": "book", 41 | "author": [{"name":"Appleton, Victor"}], 42 | "title": "Tom Swift and His Electric Runabout", 43 | "issued": {"year":"1910"} 44 | } 45 | ] 46 | <<===== INPUT =====<< 47 | -------------------------------------------------------------------------------- /attic/xmle4xLoad.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Pre-sniff loader for E4X parsing module 3 | * 4 | * E4X is no longer supported in browsers, but it is implemented in 5 | * Rhino, where it serves a useful role in the test suite, for 6 | * catching XML errors that are missed by jing and by the string-based 7 | * parser. 8 | * 9 | * So ... we'd like to keep it around, but E4X code throws ugly syntax 10 | * errors when it is loaded anywhere outside of Rhino. Since there is 11 | * no standard loading incantation that holds across JavaScript engines, 12 | * this poses something of a problem for a "one size fits all" release 13 | * of citeproc-js. 14 | * 15 | * Hmm. 16 | * 17 | * So what we have here is a hack. We assume that E4X will run ONLY in 18 | * Rhino, or at least only in engines running "server-side," and and 19 | * have a load() function. And are loading the processor from a local 20 | * disk. That is accessible to the context into which the processor 21 | * code is being loaded. And that the path to the file with the E4X 22 | * stuff in it is "./src/xmle4x.js". I said it was a hack, and I 23 | * wasn't kidding. 24 | */ 25 | 26 | if ("undefined" !== typeof XML) { 27 | try { 28 | load("./src/xmle4x.js"); 29 | } catch (e) { 30 | throw "OOPS: "+e; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /attic/xmljsonMakeXml.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Juris-M/citeproc-js/f88a47e6d143ace8a79569388534ff8ad9205da0/attic/xmljsonMakeXml.js -------------------------------------------------------------------------------- /cslrun.yaml: -------------------------------------------------------------------------------- 1 | groupIdMap: 2 | final: 2319948 3 | draft: 2339078 4 | path: 5 | styletests: fixtures/styles 6 | local: fixtures/local 7 | std: fixtures/std/processor-tests/humans 8 | src: src 9 | abbrevs: /media/storage/src/JM/jurism/juris-abbrevs 10 | locale: locale 11 | modules: /media/storage/src/JM/citeproc-js/juris-modules 12 | cslschema: csl-schemata/csl.rnc 13 | cslmschema: csl-schemata/csl-mlz.rnc 14 | -------------------------------------------------------------------------------- /demo/README.md: -------------------------------------------------------------------------------- 1 | # `citeproc-js` Demo Page 2 | 3 | The code in this folder can be used to spin up a local `citeproc-js` 4 | demo page. It is mainly intended as a sample of running code for 5 | developers working with the processor. 6 | 7 | The demo.html page must be served from an HTTP server. (Because it uses AJAX 8 | requests, it won't work if you open it in your browser from the filesystem.) 9 | So, either put this citeproc-js repository in a directory served by, for example, 10 | Apache, or you can use Node.js with the included tiny server script, 11 | node-server.js. 12 | 13 | To start the server, clone this repo to your local machine, open a terminal, 14 | enter this `./demo` subdirectory, and run the following command: 15 | 16 | node ./node-server.js 17 | 18 | Point a browser at the address reported by the server, and the 19 | demo page should appear. 20 | 21 | See the demo.js file for more information about how it works. 22 | 23 | ---- 24 | Hope this helps. If you run into any snags, feel free to give me a shout. 25 | 26 | Frank Bennett 27 | Nagoya 28 | Japan 29 | -------------------------------------------------------------------------------- /demo/demo.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |

CSL Bibliography Samples

11 | 12 |

13 | This page displays citations rendered by citeproc-js. 14 |

15 | 16 | 17 | 18 |
19 | 20 |

Citations

21 | 22 |
23 | 24 |
25 | 26 | 29 | 30 |
31 | 32 |

Bibliography

33 |
34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /demo/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "demo", 3 | "version": "1.0.0", 4 | "description": "The code in this folder can be used to spin up a local `citeproc-js` demo page. It is mainly intended as a sample of running code for developers working with the processor.", 5 | "main": "demo.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "author": "", 10 | "license": "ISC", 11 | "devDependencies": { 12 | "ecstatic": "^4.1.4", 13 | "getopts": "^2.2.5", 14 | "randomize": "0.0.4" 15 | }, 16 | "dependencies": { 17 | "http-server": "^0.12.3" 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_Archive.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Pick. 9 | <<===== RESULT =====<< 10 | 11 | >>== ABBREVIATIONS ==>> 12 | { 13 | "default": { 14 | "container-title": { 15 | "Pickwick Papers": "Pick." 16 | } 17 | } 18 | } 19 | <<== ABBREVIATIONS ==<< 20 | 21 | 22 | >>===== CSL =====>> 23 | 38 | <<===== CSL =====<< 39 | 40 | 41 | >>===== INPUT =====>> 42 | [ 43 | { 44 | "id": "ITEM-1", 45 | "type": "book", 46 | "archive": "Pickwick Papers" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_ArchivePlace.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Studwell 9 | <<===== RESULT =====<< 10 | 11 | >>== ABBREVIATIONS ==>> 12 | { 13 | "default": { 14 | "place": { 15 | "Studwell Close": "Studwell" 16 | } 17 | } 18 | } 19 | <<== ABBREVIATIONS ==<< 20 | 21 | 22 | >>===== CSL =====>> 23 | 38 | <<===== CSL =====<< 39 | 40 | 41 | >>===== INPUT =====>> 42 | [ 43 | { 44 | "id": "ITEM-1", 45 | "type": "book", 46 | "archive-place": "Studwell Close" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_Event.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== ABBREVIATIONS ==>> 7 | { 8 | "default": { 9 | "title": { 10 | "1st Session": "1st Sess." 11 | } 12 | }, 13 | "us": { 14 | "title": { 15 | "1st Session": "1st Sess." 16 | } 17 | } 18 | } 19 | <<== ABBREVIATIONS ==<< 20 | 21 | 22 | >>== RESULT ==>> 23 | 1st Sess. 24 | <<== RESULT ==<< 25 | 26 | >>===== CSL =====>> 27 | 42 | <<===== CSL =====<< 43 | 44 | 45 | >>===== INPUT =====>> 46 | [ 47 | { 48 | "id": "ITEM-1", 49 | "title": "Hello", 50 | "event": "1st Session", 51 | "note": "{:jurisdiction:us}", 52 | "type": "bill" 53 | } 54 | ] 55 | <<===== INPUT =====<< 56 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_JournalExistsInList.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== ABBREVIATIONS ==>> 7 | { 8 | "default": { 9 | "container-title": { 10 | "Journal of Irreproducible Results": "J. Irrep. Res." 11 | } 12 | } 13 | } 14 | <<== ABBREVIATIONS ==<< 15 | 16 | 17 | >>== RESULT ==>> 18 | J. Irrep. Res. 19 | <<== RESULT ==<< 20 | 21 | >>===== CSL =====>> 22 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "container-title": "Journal of Irreproducible Results", 44 | "id": "ITEM-1", 45 | "journalAbbreviation": "JIR", 46 | "type": "article-journal" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_Jurisdiction.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== ABBREVIATIONS ==>> 7 | { 8 | "default": { 9 | "place": { 10 | "US:NE": "Neb." 11 | } 12 | } 13 | } 14 | <<== ABBREVIATIONS ==<< 15 | 16 | 17 | >>== RESULT ==>> 18 | Neb. 19 | <<== RESULT ==<< 20 | 21 | >>===== CSL =====>> 22 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "id": "ITEM-1", 44 | "jurisdiction": "us:ne", 45 | "type": "bill" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/abbrevs_SeriesExistsInList.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | 7 | 8 | >>== RESULT ==>> 9 | I.R. Wildlife Series 10 | <<== RESULT ==<< 11 | 12 | >>== ABBREVIATIONS ==>> 13 | { 14 | "default": { 15 | "collection-title": { 16 | "International Rescue Wildlife Series": "I.R. Wildlife Series" 17 | } 18 | } 19 | } 20 | <<== ABBREVIATIONS ==<< 21 | 22 | 23 | >>===== CSL =====>> 24 | 39 | <<===== CSL =====<< 40 | 41 | 42 | >>===== INPUT =====>> 43 | [ 44 | { 45 | "collection-title": "International Rescue Wildlife Series", 46 | "id": "ITEM-1", 47 | "type": "book" 48 | } 49 | ] 50 | <<===== INPUT =====<< 51 | -------------------------------------------------------------------------------- /fixtures/local/affix_CommaAfterQuoteCompactPrefix.txt: -------------------------------------------------------------------------------- 1 | >>==== MODE ====>> 2 | citation 3 | <<==== MODE ====<< 4 | 5 | >>==== RESULT ====>> 6 | “quote”, Hello Thing 7 | <<==== RESULT ====<< 8 | 9 | >>==== CITATION-ITEMS ====>> 10 | [ 11 | [ 12 | { 13 | "id": "ITEM-1", 14 | "prefix": "'quote'," 15 | } 16 | ] 17 | ] 18 | <<==== CITATION-ITEMS ====<< 19 | 20 | >>==== CSL ====>> 21 | 36 | <<==== CSL ====<< 37 | 38 | >>==== INPUT ====>> 39 | [ 40 | { 41 | "id": "ITEM-1", 42 | "title": "Hello Thing", 43 | "type": "book" 44 | } 45 | ] 46 | <<==== INPUT ====<< 47 | 48 | -------------------------------------------------------------------------------- /fixtures/local/affix_SpaceWithQuotesCompactSuffix.txt: -------------------------------------------------------------------------------- 1 | >>==== MODE ====>> 2 | citation 3 | <<==== MODE ====<< 4 | 5 | >>==== RESULT ====>> 6 | The Title And “so it goes” 7 | <<==== RESULT ====<< 8 | 9 | >>==== CITATION-ITEMS ====>> 10 | [ 11 | [ 12 | { 13 | "id": "ITEM-1", 14 | "suffix": "And \"so it goes\"" 15 | } 16 | ] 17 | ] 18 | <<==== CITATION-ITEMS ====<< 19 | 20 | >>==== CSL ====>> 21 | 36 | <<==== CSL ====<< 37 | 38 | >>==== INPUT ====>> 39 | [ 40 | { 41 | "id": "ITEM-1", 42 | "title": "The Title", 43 | "type": "book" 44 | } 45 | ] 46 | <<==== INPUT ====<< 47 | 48 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_BadKanjiDateParse.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 四月 1, 1976 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "四月 1, 1976" 38 | }, 39 | "title": "Some Book or Other", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_CapsAfterOneWordPrefixCompactPrefix.txt: -------------------------------------------------------------------------------- 1 | >>==== MODE ====>> 2 | citation 3 | <<==== MODE ====<< 4 | 5 | >>==== RESULT ====>> 6 | Nocapsafter. ibid. 7 | Caps after. Ibid. 8 | <<==== RESULT ====<< 9 | 10 | >>==== CITATION-ITEMS ====>> 11 | [ 12 | [ 13 | { 14 | "id": "ITEM-1", 15 | "prefix": "Nocapsafter." 16 | } 17 | ], 18 | [ 19 | { 20 | "id": "ITEM-1", 21 | "prefix": "Caps after." 22 | } 23 | ] 24 | ] 25 | <<==== CITATION-ITEMS ====<< 26 | 27 | >>==== CSL ====>> 28 | 43 | <<==== CSL ====<< 44 | 45 | >>==== INPUT ====>> 46 | [ 47 | { 48 | "id": "ITEM-1", 49 | "title": "Title", 50 | "type": "book" 51 | } 52 | ] 53 | <<==== INPUT ====<< 54 | 55 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_CslReverseLookup.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | John Doe 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John" 40 | } 41 | ], 42 | "id": "ITEM-1", 43 | "issued": { 44 | "date-parts": [ 45 | [ 46 | "1965", 47 | "6", 48 | "1" 49 | ] 50 | ] 51 | }, 52 | "title": "His Anonymous Life", 53 | "type": "book" 54 | } 55 | ] 56 | <<===== INPUT =====<< 57 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_IllustratorInExtra.txt: -------------------------------------------------------------------------------- 1 | >>==== MODE ====>> 2 | citation 3 | <<==== MODE ====<< 4 | 5 | >>==== RESULT ====>> 6 | John C. Smith; Karl T. Brown 7 | <<==== RESULT ====<< 8 | 9 | >>==== CITATION-ITEMS ====>> 10 | [ 11 | [ 12 | { 13 | "id": "ITEM-1" 14 | } 15 | ] 16 | ] 17 | <<==== CITATION-ITEMS ====<< 18 | 19 | >>==== CSL ====>> 20 | 37 | <<==== CSL ====<< 38 | 39 | >>==== INPUT ====>> 40 | [ 41 | { 42 | "id": "ITEM-1", 43 | "note": "illustrator: Smith || John C.\nauthor: Brown || Karl T.", 44 | "title": "Book A", 45 | "type": "book" 46 | } 47 | ] 48 | <<==== INPUT ====<< 49 | 50 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_ShortFormOfTitleFails.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== ABBREVIATIONS ==>> 7 | { 8 | "default": { 9 | "title": { 10 | "Journal of Irreproducible Results": "J. Irrep. Res." 11 | } 12 | } 13 | } 14 | <<== ABBREVIATIONS ==<< 15 | 16 | 17 | >>== RESULT ==>> 18 | Minpō Japanese Civil Code. 19 | <<== RESULT ==<< 20 | 21 | >>===== CSL =====>> 22 | 38 | <<===== CSL =====<< 39 | 40 | 41 | >>===== INPUT =====>> 42 | [ 43 | { 44 | "id": "ITEM-1", 45 | "title": "民法", 46 | "type": "legislation", 47 | "multi":{ 48 | "_keys":{ 49 | "title":{ 50 | "ja-alalc97":"Minpō", 51 | "en":"Japanese Civil Code" 52 | } 53 | } 54 | } 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_TurkishDateCorruption.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | September 20, 2006; August 30, 1999 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "September 20, 2006" 38 | }, 39 | "title": "Some English Book or Other", 40 | "type": "book" 41 | }, 42 | { 43 | "id": "ITEM-2", 44 | "issued": { 45 | "date-parts": [], 46 | "raw": "ağustos 30, 1999" 47 | }, 48 | "title": "Some Turkish Book or Other", 49 | "type": "book" 50 | } 51 | ] 52 | <<===== INPUT =====<< 53 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_UnderscoreDateRangeDelimiter.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 1897–1912 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "1897_1912" 38 | }, 39 | "title": "Some Book or Other", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/bugreports_YearLastBadOutput.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | January 1, 1989 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "01/01/1989" 38 | }, 39 | "title": "Some Book or Other", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ExtraFieldRecognition.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | His Anonymous Life (Rocky Mountain Time Zone) 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "id": "ITEM-1", 38 | "note": "{:abstract:Rocky Mountain Time Zone}", 39 | "title": "His Anonymous Life", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_NoByzantineInitialsMisstep.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== RESULT =====>> 6 | 林誠 7 | <<===== RESULT =====<< 8 | 9 | 10 | >>===== CSL =====>> 11 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "author": [ 35 | { 36 | "family": "林", 37 | "given": "誠" 38 | } 39 | ], 40 | "id": "ITEM-1", 41 | "type": "book" 42 | } 43 | ] 44 | <<===== INPUT =====<< 45 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseDroppingParticleSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Doe, John de 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "author": [ 38 | { 39 | "family": "Doe", 40 | "given": "John de" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseNonDroppingParticleSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | van Doe, John 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "author": [ 38 | { 39 | "family": "van Doe", 40 | "given": "John", 41 | "parse-names": "true" 42 | } 43 | ], 44 | "id": "ITEM-1", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseParticleAsName.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | van den Doe, John 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "author": [ 38 | { 39 | "family": "\"van den Doe\"", 40 | "given": "John", 41 | "parse-names": "true" 42 | } 43 | ], 44 | "id": "ITEM-1", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixAllCapsForceCommaNormalOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | Weird, but possible. 7 | 8 | >>===== RESULT =====>> 9 | John Doe, III 10 | <<===== RESULT =====<< 11 | 12 | 13 | >>===== CSL =====>> 14 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "author": [ 38 | { 39 | "family": "Doe", 40 | "given": "John,! III", 41 | "parse-names": "true" 42 | } 43 | ], 44 | "id": "ITEM-1", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixAllCapsForceCommaSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | Doe, John, III 8 | <<===== RESULT =====<< 9 | 10 | 11 | >>===== CSL =====>> 12 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "author": [ 36 | { 37 | "family": "Doe", 38 | "given": "John,! III", 39 | "parse-names": "true" 40 | } 41 | ], 42 | "id": "ITEM-1", 43 | "type": "book" 44 | } 45 | ] 46 | <<===== INPUT =====<< 47 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixAllCapsSimpleNormalOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | John Doe III 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, III", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixAllCapsSimpleSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Doe, John, III 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, III", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixMixedCaseForceCommaNormalOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | John Doe, Jr. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John,! Jr.", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixMixedCaseForceCommaSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Doe, John, Jr. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John,! Jr.", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixMixedCaseSimpleNormalOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | John Doe Jr. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, Jr.", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_ParseSuffixMixedCaseSimpleSortOrder.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Doe, John, Jr. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, Jr.", 40 | "parse-names": "true" 41 | } 42 | ], 43 | "id": "ITEM-1", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/citeprocjs_SecondaryOnShort.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 民法 Minpō 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "id": "ITEM-1", 36 | "multi": { 37 | "_keys": { 38 | "title": { 39 | "ja-Latn-hepburn": "Minpō" 40 | } 41 | } 42 | }, 43 | "title": "民法", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/date_CheaterDateRange.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | >>[0] December 31, 2014–January 1, 2015 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CITATIONS =====>> 13 | [ 14 | [ 15 | { 16 | "citationID": "CITATION-1", 17 | "citationItems": [ 18 | { 19 | "id": "ITEM-1" 20 | } 21 | ], 22 | "properties": { 23 | "noteIndex": 1 24 | } 25 | }, 26 | [], 27 | [] 28 | ] 29 | ] 30 | <<===== CITATIONS =====<< 31 | 32 | 33 | >>===== CSL =====>> 34 | 49 | <<===== CSL =====<< 50 | 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "note": "issued: 2014-12-31/2015-01-01" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/date_DateBCraw.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | 8 | >>===== RESULT =====>> 9 | (5BC) 10 | <<===== RESULT =====<< 11 | 12 | 13 | >>===== CSL =====>> 14 | 33 | <<===== CSL =====<< 34 | 35 | 36 | >>===== INPUT =====>> 37 | [ 38 | { 39 | "id": "ITEM-1", 40 | "issued": { 41 | "date-parts": [], 42 | "raw": "-5" 43 | }, 44 | "title": "Ignore me", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/date_LoneJapaneseMonth.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | July 1964 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "7月1964" 38 | }, 39 | "title": "My Title", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/date_RawParseSimpleDate.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | 8 | >>===== RESULT =====>> 9 | (28 October 1958) 10 | <<===== RESULT =====<< 11 | 12 | 13 | >>===== CSL =====>> 14 | 33 | <<===== CSL =====<< 34 | 35 | 36 | >>===== INPUT =====>> 37 | [ 38 | { 39 | "id": "ITEM-1", 40 | "issued": { 41 | "date-parts": [], 42 | "raw": "Oct 28, 1958" 43 | }, 44 | "title": "Ignore me", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/date_RawSeasonRange1.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Spring 1999–Summer 2001 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "Spring 1999 - Summer 2001" 38 | }, 39 | "type": "book" 40 | } 41 | ] 42 | <<===== INPUT =====<< 43 | -------------------------------------------------------------------------------- /fixtures/local/date_RawSeasonRange2.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | Down Under season range. 6 | 7 | >>===== RESULT =====>> 8 | Summer–Spring 1999 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "Summer 1999 - Spring 1999" 38 | }, 39 | "type": "book" 40 | } 41 | ] 42 | <<===== INPUT =====<< 43 | -------------------------------------------------------------------------------- /fixtures/local/date_RawSeasonRange3.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | Down Under season range. 6 | 7 | >>===== RESULT =====>> 8 | Spring–Summer 1999 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "issued": { 36 | "date-parts": [], 37 | "raw": "Spring 1999 - Summer 1999" 38 | }, 39 | "type": "book" 40 | } 41 | ] 42 | <<===== INPUT =====<< 43 | -------------------------------------------------------------------------------- /fixtures/local/decor_BreakingQuotes.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | Then: This parse used to break by throwing a mismatched 6 | straight single quote and properly formatted double 7 | quotes. 8 | 9 | Now: The string is passed back verbatim. As the parse 10 | breaks completely (there are no matching pairs), 11 | that is the better behavior. 12 | 13 | 2017-02-04 14 | 15 | >>== RESULT ==>> 16 | '"Black Power”, and the Roots of the African American Freedom Struggle 17 | <<== RESULT ==<< 18 | 19 | mhra.csl 20 | 21 | 22 | >>===== CSL =====>> 23 | 38 | <<===== CSL =====<< 39 | 40 | 41 | >>===== INPUT =====>> 42 | [ 43 | { 44 | "id": "ITEM-1", 45 | "title": "'\"Black Power”, and the Roots of the African American Freedom Struggle", 46 | "type": "article" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/flipflop_ItalicsSimplePlus.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | One TwoG Three</i> Four Five! 9 | One <i>TwoH Three Four Five! 10 | <<===== RESULT =====<< 11 | 12 | >>===== CITATION-ITEMS =====>> 13 | [ 14 | [ 15 | { 16 | "id": "ITEM-7" 17 | } 18 | ], 19 | [ 20 | { 21 | "id": "ITEM-8" 22 | } 23 | ] 24 | ] 25 | <<===== CITATION-ITEMS =====<< 26 | 27 | 28 | 29 | 30 | >>===== CSL =====>> 31 | 46 | <<===== CSL =====<< 47 | 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-7", 53 | "title": "One TwoG Three Four Five!", 54 | "type": "book" 55 | }, 56 | { 57 | "id": "ITEM-8", 58 | "title": "One TwoH Three Four Five!", 59 | "type": "book" 60 | } 61 | ] 62 | <<===== INPUT =====<< 63 | -------------------------------------------------------------------------------- /fixtures/local/form_TitleShortWithTitleSubSupport.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Book A 9 | <<===== RESULT =====<< 10 | 11 | >>===== OPTIONS =====>> 12 | { 13 | "clobber_locator_if_no_statute_section": false, 14 | "handle_parallel_articles": true, 15 | "main_title_from_short_title": true, 16 | "consolidate_legal_items": true 17 | } 18 | <<===== OPTIONS =====<< 19 | 20 | >>===== CSL =====>> 21 | 36 | <<===== CSL =====<< 37 | 38 | 39 | >>===== INPUT =====>> 40 | [ 41 | { 42 | "id": "ITEM-1", 43 | "title": "Book A: The Long Version", 44 | "title-short": "Book A", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/form_UppercaseSubtitleWithNumber.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 6.1: Should not trigger implicit short title 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CITATION-ITEMS =====>> 13 | [ 14 | [ 15 | { 16 | "id": "ITEM-1" 17 | } 18 | ] 19 | ] 20 | <<===== CITATION-ITEMS =====<< 21 | 22 | 23 | 24 | >>===== OPTIONS =====>> 25 | { 26 | "uppercase_subtitles": true, 27 | "implicit_short_title": true 28 | } 29 | <<===== OPTIONS =====<< 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | 50 | >>===== INPUT =====>> 51 | [ 52 | { 53 | "id": "ITEM-1", 54 | "title": "6.1 : should not trigger implicit short title", 55 | "type": "article-journal" 56 | } 57 | ] 58 | <<===== INPUT =====<< 59 | -------------------------------------------------------------------------------- /fixtures/local/initials_NonByzantineSimple.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 我妻栄。小泉【健】。 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "我妻", 39 | "given": "栄" 40 | } 41 | ], 42 | "id": "ITEM-1", 43 | "type": "book" 44 | }, 45 | { 46 | "author": [ 47 | { 48 | "family": "小泉", 49 | "given": "健一郎" 50 | } 51 | ], 52 | "id": "ITEM-2", 53 | "type": "book" 54 | } 55 | ] 56 | <<===== INPUT =====<< 57 | -------------------------------------------------------------------------------- /fixtures/local/institutions_QuotesSuppressCommaSplit.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | Note: With the move to using field separators, quote escapes are 6 | no longer required, and have been removed from citeproc-js. 7 | 8 | 9 | >>===== RESULT =====>> 10 | Ministry of Fear, Loathing and Error & Mercuricon Spittle 11 | <<===== RESULT =====<< 12 | 13 | 14 | >>===== CSL =====>> 15 | 32 | <<===== CSL =====<< 33 | 34 | 35 | >>===== INPUT =====>> 36 | [ 37 | { 38 | "author": [ 39 | { 40 | "literal": "Ministry of Fear, Loathing and Error" 41 | }, 42 | { 43 | "family": "Spittle", 44 | "given": "Mercuricon", 45 | "static-ordering": false 46 | } 47 | ], 48 | "id": "item-1", 49 | "type": "book" 50 | } 51 | ] 52 | <<===== INPUT =====<< 53 | -------------------------------------------------------------------------------- /fixtures/local/label_NonNumericLabelAsSingular.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== RESULT ==>> 7 | Title: Vol. 1. Volume title, second, and third 8 | <<== RESULT ==<< 9 | 10 | >>===== CSL =====>> 11 | 39 | <<===== CSL =====<< 40 | 41 | 42 | >>===== INPUT =====>> 43 | [ 44 | { 45 | "id": "Titlea", 46 | "type":"book", 47 | "title":"Title", 48 | "volume":"1. Volume title, second, and third" 49 | } 50 | ] 51 | <<===== INPUT =====<< 52 | -------------------------------------------------------------------------------- /fixtures/local/locale_RescueBadLocales.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | His Anonymous Life; Her anonymouse laife 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "language": "English", 36 | "title": "His anonymous life", 37 | "type": "book" 38 | }, 39 | { 40 | "id": "ITEM-2", 41 | "language": "XnotEnglish", 42 | "title": "Her anonymouse laife", 43 | "type": "book" 44 | } 45 | ] 46 | <<===== INPUT =====<< 47 | -------------------------------------------------------------------------------- /fixtures/local/locale_TitleCaseEnglishLangUpperEmptyLocale.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | Input data for this test included a key with irregular capitalization. 6 | This option controls for it. 7 | 8 | >>===== OPTIONS =====>> 9 | { 10 | "normalize_lang_keys_to_lowercase": true 11 | } 12 | <<===== OPTIONS =====<< 13 | 14 | 15 | 16 | >>===== RESULT =====>> 17 | His Anonymous Life 18 | <<===== RESULT =====<< 19 | 20 | 21 | >>===== CSL =====>> 22 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "id": "ITEM-1", 44 | "language": "EN", 45 | "title": "His anonymous life", 46 | "type": "book" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/locator_PassThroughEnDash.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | zu B. I. 3.–4., Rn. 21–22 der Gründe 9 | <<===== RESULT =====<< 10 | 11 | >>===== CITATION-ITEMS =====>> 12 | [ 13 | [ 14 | { 15 | "id": "ITEM-1", 16 | "locator": "zu B. I. 3.–4., Rn. 21–22 der Gründe" 17 | } 18 | ] 19 | ] 20 | <<===== CITATION-ITEMS =====<< 21 | 22 | 23 | 24 | >>===== CSL =====>> 25 | 40 | <<===== CSL =====<< 41 | 42 | 43 | >>===== INPUT =====>> 44 | [ 45 | { 46 | "id": "ITEM-1", 47 | "type": "book", 48 | "archive": "Pickwick Papers" 49 | } 50 | ] 51 | <<===== INPUT =====<< 52 | -------------------------------------------------------------------------------- /fixtures/local/locator_QuashAffixesWithLocator.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | One 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CITATION-ITEMS =====>> 13 | [ 14 | [ 15 | { 16 | "id": "ITEM-5", 17 | "label": "locator label should be ignored too" 18 | } 19 | ] 20 | ] 21 | <<===== CITATION-ITEMS =====<< 22 | 23 | 24 | >>===== CSL =====>> 25 | 44 | <<===== CSL =====<< 45 | 46 | 47 | >>===== INPUT =====>> 48 | [ 49 | { 50 | "id": "ITEM-5", 51 | "title": "One", 52 | "type": "bill" 53 | } 54 | ] 55 | <<===== INPUT =====<< 56 | -------------------------------------------------------------------------------- /fixtures/local/magic_StripPeriodsOnDottedTitle.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | >>== RESULT ==>> 6 | The XYZ of Cong Rec and OpenCongress.org 7 | <<== RESULT ==<< 8 | 9 | >>===== CSL =====>> 10 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "title": "The X.Y.Z. of Cong. Rec. and OpenCongress.org", 36 | "type": "book" 37 | } 38 | ] 39 | <<===== INPUT =====<< 40 | -------------------------------------------------------------------------------- /fixtures/local/magic_StripPeriodsWithTextCase.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Kitchens v Grohman 9 | <<===== RESULT =====<< 10 | 11 | 12 | 13 | >>===== CSL =====>> 14 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "id": "ITEM-1", 36 | "title": "Kitchens v. Grohman", 37 | "type": "legal_case" 38 | } 39 | ] 40 | <<===== INPUT =====<< 41 | -------------------------------------------------------------------------------- /fixtures/local/magic_SuppressLayoutDelimiterIfPrefixCommaCompactPrefix.txt: -------------------------------------------------------------------------------- 1 | >>==== MODE ====>> 2 | citation 3 | <<==== MODE ====<< 4 | 5 | >>==== RESULT ====>> 6 | Book A, cited in Book B 7 | <<==== RESULT ====<< 8 | 9 | >>==== CITATION-ITEMS ====>> 10 | [ 11 | [ 12 | { 13 | "id": "ITEM-1" 14 | }, 15 | { 16 | "id": "ITEM-2", 17 | "prefix": ", cited in" 18 | } 19 | ] 20 | ] 21 | <<==== CITATION-ITEMS ====<< 22 | 23 | >>==== CSL ====>> 24 | 39 | <<==== CSL ====<< 40 | 41 | >>==== INPUT ====>> 42 | [ 43 | { 44 | "id": "ITEM-1", 45 | "title": "Book A", 46 | "type": "book" 47 | }, 48 | { 49 | "id": "ITEM-2", 50 | "title": "Book B", 51 | "type": "book" 52 | } 53 | ] 54 | <<==== INPUT ====<< 55 | 56 | -------------------------------------------------------------------------------- /fixtures/local/multilingual_RightToLeft.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | >>===== OPTIONS =====>> 6 | { 7 | "rtl_support": true 8 | } 9 | <<===== OPTIONS =====<< 10 | 11 | 12 | 13 | 14 | >>===== RESULT =====>> 15 | (הוצאה לאור של מכללת אוהלו) 16 | <<===== RESULT =====<< 17 | 18 | 19 | >>===== CSL =====>> 20 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "title":"הוצאה לאור של מכללת אוהלו", 44 | "id": "ITEM-1", 45 | "type": "book", 46 | "issued": { 47 | "date-parts": [[2002]] 48 | }, 49 | "language": "he" 50 | } 51 | ] 52 | <<===== INPUT =====<< 53 | -------------------------------------------------------------------------------- /fixtures/local/multilingual_TextPrimaryNonexistent.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Aardvaark; Zzzzzzzzz 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 32 | <<===== CSL =====<< 33 | 34 | 35 | >>===== INPUT =====>> 36 | [ 37 | { 38 | "id": "ITEM-1", 39 | "title": "Aardvaark", 40 | "type": "book" 41 | }, 42 | { 43 | "id": "ITEM-2", 44 | "title": "Zzzzzzzzz", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/multilingual_TextSecondaryNonexistent.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 民法; 刑法 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "id": "ITEM-1", 36 | "multi": { 37 | "_keys": { 38 | "title": { 39 | "en": "Civil Code" 40 | } 41 | } 42 | }, 43 | "title": "民法", 44 | "type": "book" 45 | }, 46 | { 47 | "id": "ITEM-2", 48 | "multi": { 49 | "_keys": { 50 | "title": { 51 | "en": "Criminal Code" 52 | } 53 | } 54 | }, 55 | "title": "刑法", 56 | "type": "book" 57 | } 58 | ] 59 | <<===== INPUT =====<< 60 | -------------------------------------------------------------------------------- /fixtures/local/name_EtAlAsSuffix.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | John Doe et al. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, et al." 40 | } 41 | ], 42 | "id": "ITEM-1", 43 | "title": "His Anonymous Life", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/name_EtAlAsSuffixInCitationShort.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Doe et al. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 30 | <<===== CSL =====<< 31 | 32 | 33 | >>===== INPUT =====>> 34 | [ 35 | { 36 | "author": [ 37 | { 38 | "family": "Doe", 39 | "given": "John, et al." 40 | } 41 | ], 42 | "id": "ITEM-1", 43 | "title": "His Anonymous Life", 44 | "type": "book" 45 | } 46 | ] 47 | <<===== INPUT =====<< 48 | -------------------------------------------------------------------------------- /fixtures/local/name_SimpleVietnamese.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | This is actually an INCORRECT result, but should be the 7 | default behavior of the processor. 8 | 9 | Correct output would be: Lê Cao Đài 10 | 11 | >>===== RESULT =====>> 12 | Cao Đài Lê 13 | <<===== RESULT =====<< 14 | 15 | 16 | >>===== CSL =====>> 17 | 34 | <<===== CSL =====<< 35 | 36 | 37 | >>===== INPUT =====>> 38 | [ 39 | { 40 | "author": [ 41 | { 42 | "family": "Lê", 43 | "given": "Cao Đài" 44 | } 45 | ], 46 | "id": "ITEM-1", 47 | "type": "book" 48 | } 49 | ] 50 | <<===== INPUT =====<< 51 | -------------------------------------------------------------------------------- /fixtures/local/nameattr_EtAlSubsequentMinOnCitationInCitation.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | John Doe et al. 8 | <<===== RESULT =====<< 9 | 10 | 11 | >>===== CITATION-ITEMS =====>> 12 | [ 13 | [ 14 | { 15 | "id": "ITEM-1", 16 | "position": 1 17 | } 18 | ] 19 | ] 20 | <<===== CITATION-ITEMS =====<< 21 | 22 | 23 | >>===== CSL =====>> 24 | 42 | <<===== CSL =====<< 43 | 44 | 45 | >>===== INPUT =====>> 46 | [ 47 | { 48 | "author": [ 49 | { 50 | "family": "Doe", 51 | "given": "John" 52 | }, 53 | { 54 | "family": "Roe", 55 | "given": "Jane" 56 | } 57 | ], 58 | "id": "ITEM-1", 59 | "type": "book" 60 | } 61 | ] 62 | <<===== INPUT =====<< 63 | -------------------------------------------------------------------------------- /fixtures/local/nameattr_EtAlSubsequentMinOnStyleInCitation.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | John Doe et al. 8 | <<===== RESULT =====<< 9 | 10 | 11 | >>===== CITATION-ITEMS =====>> 12 | [ 13 | [ 14 | { 15 | "id": "ITEM-1", 16 | "position": 1 17 | } 18 | ] 19 | ] 20 | <<===== CITATION-ITEMS =====<< 21 | 22 | 23 | >>===== CSL =====>> 24 | 43 | <<===== CSL =====<< 44 | 45 | 46 | >>===== INPUT =====>> 47 | [ 48 | { 49 | "author": [ 50 | { 51 | "family": "Doe", 52 | "given": "John" 53 | }, 54 | { 55 | "family": "Roe", 56 | "given": "Jane" 57 | } 58 | ], 59 | "id": "ITEM-1", 60 | "type": "book" 61 | } 62 | ] 63 | <<===== INPUT =====<< 64 | -------------------------------------------------------------------------------- /fixtures/local/number_AffixesOnAdjacentNumbers.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | [2002] 3 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "collection-number": "2002", 38 | "id": "ITEM-1", 39 | "volume": "3" 40 | } 41 | ] 42 | <<===== INPUT =====<< 43 | -------------------------------------------------------------------------------- /fixtures/local/number_AmpersandQA.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | Q&A 9 | <<===== RESULT =====<< 10 | 11 | >>===== CSL =====>> 12 | 27 | <<===== CSL =====<< 28 | 29 | 30 | >>===== INPUT =====>> 31 | [ 32 | { 33 | "id": "ITEM-1", 34 | "type": "book", 35 | "page": "Q&A" 36 | } 37 | ] 38 | <<===== INPUT =====<< 39 | -------------------------------------------------------------------------------- /fixtures/local/number_CollapseWithEnDash.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 437–72 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 33 | <<===== CSL =====<< 34 | 35 | 36 | >>===== INPUT =====>> 37 | [ 38 | { 39 | "page": "437–472", 40 | "id": "ITEM-1" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | 45 | -------------------------------------------------------------------------------- /fixtures/local/number_ExplicitLeafNumber.txt: -------------------------------------------------------------------------------- 1 | >>== MODE ==>> 2 | citation 3 | <<== MODE ==<< 4 | 5 | 6 | >>== RESULT ==>> 7 | page 54-57; pages 65–67; pages 70-72–83-84 8 | <<== RESULT ==<< 9 | 10 | >>===== CSL =====>> 11 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "id": "ITEM-1", 36 | "page": "54\\-57", 37 | "type": "book" 38 | }, 39 | { 40 | "id": "ITEM-2", 41 | "page": "65-67", 42 | "type": "book" 43 | }, 44 | { 45 | "id": "ITEM-3", 46 | "page": "70\\-72-83\\-84", 47 | "type": "book" 48 | } 49 | ] 50 | <<===== INPUT =====<< 51 | -------------------------------------------------------------------------------- /fixtures/local/number_LargeNumber.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 9007199254740993 9 | <<===== RESULT =====<< 10 | 11 | >>===== CSL =====>> 12 | 27 | <<===== CSL =====<< 28 | 29 | 30 | >>===== INPUT =====>> 31 | [ 32 | { 33 | "id": "ITEM-1", 34 | "type": "book", 35 | "page": "9007199254740993" 36 | } 37 | ] 38 | <<===== INPUT =====<< 39 | -------------------------------------------------------------------------------- /fixtures/local/number_ParsedLabels.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | chappie 15; ch’ppie 15 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 43 | <<===== CSL =====<< 44 | 45 | 46 | >>===== INPUT =====>> 47 | [ 48 | { 49 | "id": "ITEM-1", 50 | "number": "ch. 15", 51 | "type": "legislation" 52 | } 53 | ] 54 | <<===== INPUT =====<< 55 | -------------------------------------------------------------------------------- /fixtures/local/number_RangeDelimiters.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 1–2; 128–35; 155-1 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "id": "ITEM-1", 35 | "page": "1-2", 36 | "type": "book" 37 | }, 38 | { 39 | "id": "ITEM-2", 40 | "page": "128-35", 41 | "type": "book" 42 | }, 43 | { 44 | "id": "ITEM-3", 45 | "page": "155\\-1", 46 | "type": "book" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideMultipleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters 101st–105th, 108th & 110th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideMultiplePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters 101–105, 108 & 110 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideMultipleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters ci–cv, cviii & cx 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideRangeLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters first–eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 1-8" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideRangeOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters 101st–105th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideRangePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters 101–105 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideRangeRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapters ci–cv 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideSingleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapter tenth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideSingleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapter 10th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideSinglePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapter 10 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberChapteroverrideSingleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] chapter x 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "ch. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelMultipleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] first–third, fifth & eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "1-3, 5 & 8" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelMultipleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 101st–105th, 108th & 110th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105, 108 & 110" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelMultiplePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 101–105, 108 & 110 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105, 108 & 110" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelMultipleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] ci–cv, cviii & cx 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105, 108 & 110" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelRangeLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] first–eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "1-8" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelRangeOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 101st–105th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelRangePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 101–105 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelRangeRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] ci–cv 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "101-105" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelSingleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] tenth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "10" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelSingleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 10th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "10" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelSinglePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] 10 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "10" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNolabelSingleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] x 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 47 | <<===== CSL =====<< 48 | 49 | >>===== INPUT =====>> 50 | [ 51 | { 52 | "id": "ITEM-1", 53 | "type": "book", 54 | "number": "10" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefMultipleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers first–third, fifth & eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "1-3, 5 & 8" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefMultipleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers 101st–105th, 108th & 110th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefMultiplePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers 101–105, 108 & 110 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefMultipleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers ci–cv, cviii & cx 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefRangeLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers first–eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "1-8" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefRangeOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers 101st–105th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefRangePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers 101–105 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefRangeRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] numbers ci–cv 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefSingleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] number tenth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefSingleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] number 10th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefSinglePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] number 10 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberNumberlabelundefSingleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] number x 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelMultipleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages first–third, fifth & eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 1-3, 5 & 8" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelMultipleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages 101st–105th, 108th & 110th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelMultiplePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages 101–105, 108 & 110 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelMultipleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages ci–cv, cviii & cx 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105, 108 & 110" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelRangeLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages first–eighth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 1-8" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelRangeOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages 101st–105th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelRangePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages 101–105 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelRangeRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] pages ci–cv 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 101-105" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelSingleLongordinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] page tenth 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelSingleOrdinal.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] page 10th 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelSinglePlain.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] page 10 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RevNumberPagelabelSingleRoman.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== RESULT =====>> 7 | >>[0] page x 8 | <<===== RESULT =====<< 9 | 10 | >>===== CITATIONS =====>> 11 | [ 12 | [ 13 | { 14 | "citationID": "CITATION-1", 15 | "citationItems": [ 16 | { 17 | "id": "ITEM-1" 18 | } 19 | ], 20 | "properties": { 21 | "noteIndex": 1 22 | } 23 | }, 24 | [], 25 | [] 26 | ] 27 | ] 28 | <<===== CITATIONS =====<< 29 | 30 | 31 | >>===== CSL =====>> 32 | 50 | <<===== CSL =====<< 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "type": "book", 57 | "number": "p. 10" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/number_RomanUpperCase.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | IV. 9 | <<===== RESULT =====<< 10 | 11 | >>===== CITATION-ITEMS =====>> 12 | [ 13 | [ 14 | { 15 | "id": "ITEM-1", 16 | "locator": "iv" 17 | } 18 | ] 19 | ] 20 | <<===== CITATION-ITEMS =====<< 21 | 22 | 23 | 24 | >>===== CSL =====>> 25 | 42 | <<===== CSL =====<< 43 | 44 | 45 | >>===== INPUT =====>> 46 | [ 47 | { 48 | "id": "ITEM-1", 49 | "type": "book", 50 | "title": "My Title" 51 | } 52 | ] 53 | <<===== INPUT =====<< 54 | 55 | -------------------------------------------------------------------------------- /fixtures/local/number_Substring.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | ’789 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 28 | <<===== CSL =====<< 29 | 30 | 31 | >>===== INPUT =====>> 32 | [ 33 | { 34 | "collection-number": "2002", 35 | "id": "ITEM-1", 36 | "number": "123-456-789" 37 | } 38 | ] 39 | <<===== INPUT =====<< 40 | -------------------------------------------------------------------------------- /fixtures/local/number_WithDelimiter.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | 32/4, 324; 43/5, 435 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 39 | <<===== CSL =====<< 40 | 41 | 42 | >>===== INPUT =====>> 43 | [ 44 | { 45 | "id": "ITEM-1", 46 | "issue": "4", 47 | "type": "book", 48 | "volume": "32" 49 | }, 50 | { 51 | "id": "ITEM-2", 52 | "issue": "5", 53 | "type": "book", 54 | "volume": "43" 55 | } 56 | ] 57 | <<===== INPUT =====<< 58 | -------------------------------------------------------------------------------- /fixtures/local/position_NearNoteTrue.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | 8 | >>===== RESULT =====>> 9 | Note is near! 10 | <<===== RESULT =====<< 11 | 12 | 13 | >>===== CITATION-ITEMS =====>> 14 | [ 15 | [ 16 | { 17 | "id": "ITEM-1", 18 | "near-note": true, 19 | "position": 1 20 | } 21 | ] 22 | ] 23 | <<===== CITATION-ITEMS =====<< 24 | 25 | 26 | >>===== CSL =====>> 27 | 49 | <<===== CSL =====<< 50 | 51 | 52 | >>===== INPUT =====>> 53 | [ 54 | { 55 | "id": "ITEM-1", 56 | "title": "Book A", 57 | "type": "book" 58 | } 59 | ] 60 | <<===== INPUT =====<< 61 | -------------------------------------------------------------------------------- /fixtures/local/spaces_ExplicitDoubleSpaceDelimiter.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | One.  Two. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "id": "ITEM-1", 38 | "note": "Two", 39 | "title": "One", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/spaces_ExplicitDoubleSpacePrefix.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | One.  Two. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 31 | <<===== CSL =====<< 32 | 33 | 34 | >>===== INPUT =====>> 35 | [ 36 | { 37 | "id": "ITEM-1", 38 | "note": "Two", 39 | "title": "One", 40 | "type": "book" 41 | } 42 | ] 43 | <<===== INPUT =====<< 44 | -------------------------------------------------------------------------------- /fixtures/local/spaces_ExplicitDoubleSpaceSuffix.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | One.  Two. 9 | <<===== RESULT =====<< 10 | 11 | 12 | >>===== CSL =====>> 13 | 29 | <<===== CSL =====<< 30 | 31 | 32 | >>===== INPUT =====>> 33 | [ 34 | { 35 | "id": "ITEM-1", 36 | "note": "Two", 37 | "title": "One", 38 | "type": "book" 39 | } 40 | ] 41 | <<===== INPUT =====<< 42 | -------------------------------------------------------------------------------- /fixtures/local/variables_TitleShortOnAbbrevWithTitle.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | 7 | >>===== RESULT =====>> 8 | My Short Title 9 | <<===== RESULT =====<< 10 | 11 | >>== ABBREVIATIONS ==>> 12 | { 13 | "default": { 14 | "title": { 15 | "My Long Title": "My Short Title" 16 | } 17 | } 18 | } 19 | <<== ABBREVIATIONS ==<< 20 | 21 | >>===== CSL =====>> 22 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "id": "ITEM-1", 44 | "title": "My Long Title", 45 | "type": "book" 46 | } 47 | ] 48 | <<===== INPUT =====<< 49 | -------------------------------------------------------------------------------- /fixtures/local/wrappers_DOI.txt: -------------------------------------------------------------------------------- 1 | >>===== MODE =====>> 2 | citation 3 | <<===== MODE =====<< 4 | 5 | 6 | >>===== OPTIONS =====>> 7 | { 8 | "wrap_url_and_doi": true 9 | } 10 | <<===== OPTIONS =====<< 11 | 12 | 13 | >>===== RESULT =====>> 14 | (His Anonymous Life 10.1111/j.1747-4469.1976.tb00951.x) 15 | <<===== RESULT =====<< 16 | 17 | 18 | >>===== CSL =====>> 19 | 37 | <<===== CSL =====<< 38 | 39 | 40 | >>===== INPUT =====>> 41 | [ 42 | { 43 | "id": "ITEM-1", 44 | "title": "His Anonymous Life", 45 | "DOI": "10.1111/j.1747-4469.1976.tb00951.x", 46 | "type": "book" 47 | } 48 | ] 49 | <<===== INPUT =====<< 50 | -------------------------------------------------------------------------------- /fixtures/processor/bibliographyTest.js: -------------------------------------------------------------------------------- 1 | const fs = require("fs"); 2 | 3 | 4 | describe("CiteprocJS.Bibliography", function () { 5 | beforeEach(function () { 6 | // Get the processor image 7 | var CSL = require("../citeproc_commonjs.js"); 8 | // Get the sys image with locales and input data 9 | var sys = require("./data/sys.js"); 10 | }); 11 | 12 | 13 | describe("#uncitedUpdate", function () { 14 | it("should update a bibliography entry when the item data is changed", function* () { 15 | // Fetch the input item 16 | sys.items = JSON.parse(fs.readFileSync("./data. input01.json")); 17 | // Fetch the CSL code 18 | var styleCode = fs.readFileSync("./data/style01.csl"); 19 | // Instantiate the processor with sys and the CSL 20 | var citeproc = Citeproc.Engine(styleCode, sys, "en"); 21 | citeproc.updateUncited(["ITEM-1"]); 22 | var res = citeproc.makeBibliography(); 23 | assert.equal(XX, YY); 24 | citeproc.updateUncited(["ITEM-1"]); 25 | var res2 = citeproc.makeBibliography(); 26 | assert.equal(res, res2); 27 | }); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "citeproc", 3 | "version": "2.4.49", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@citeproc-rs/wasm": { 8 | "version": "0.0.0-canary-88f356a", 9 | "resolved": "https://registry.npmjs.org/@citeproc-rs/wasm/-/wasm-0.0.0-canary-88f356a.tgz", 10 | "integrity": "sha512-Gf+uiM9AIWrYdaZYfTWcVZJYoqnbjRzVOxF4fdnlf99JZ4zdcNPt8FdecMFAkpLKFASDIp+BS7EETpLPePmDOw==" 11 | } 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "citeproc", 3 | "version": "2.4.63", 4 | "description": "The citeproc-js citation formatting module, in CommonJS format. This version is based on citeproc-js 1.4.63", 5 | "main": "citeproc_commonjs.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "https://github.com/juris-m/citeproc-js.git" 9 | }, 10 | "files": [ 11 | "citeproc_commonjs.js" 12 | ], 13 | "author": "Michael McMillan (http://michaelmcmillan.net/)", 14 | "contributors": [ 15 | "Frank Bennett (https://juris-m.github.io)" 16 | ], 17 | "license": "CPAL-1.0 OR AGPL-1.0", 18 | "dependencies": {} 19 | } 20 | -------------------------------------------------------------------------------- /package.template: -------------------------------------------------------------------------------- 1 | { 2 | "name": "citeproc", 3 | "version": "%%NPM_VERSION%%", 4 | "description": "The citeproc-js citation formatting module, in CommonJS format. This version is based on citeproc-js %%CITEPROC_VERSION%%.", 5 | "main": "citeproc_commonjs.js", 6 | "repository": { 7 | "type" : "git", 8 | "url" : "https://github.com/juris-m/citeproc-js.git" 9 | }, 10 | "files": [ 11 | "citeproc_commonjs.js" 12 | ], 13 | "author": "Michael McMillan (http://michaelmcmillan.net/)", 14 | "contributors": [ 15 | "Frank Bennett (https://juris-m.github.io)" 16 | ], 17 | "license": "CPAL-1.0 OR AGPL-1.0", 18 | "dependencies": {}, 19 | "devDependencies": {} 20 | } 21 | -------------------------------------------------------------------------------- /src/disambig_citations.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Registry.CitationReg = function () { 4 | this.citationById = {}; 5 | this.citationByIndex = []; 6 | }; 7 | -------------------------------------------------------------------------------- /src/node_alternativetext.js: -------------------------------------------------------------------------------- 1 | CSL.Node["alternative-text"] = { 2 | build: function (state, target) { 3 | if (this.tokentype === CSL.SINGLETON) { 4 | // do stuff 5 | var func = function(state, Item) { 6 | var Item = state.refetchItem(Item.id); 7 | CSL.getCite.call(state, Item); 8 | }; 9 | this.execs.push(func); 10 | } 11 | target.push(this); 12 | } 13 | }; 14 | 15 | 16 | -------------------------------------------------------------------------------- /src/node_bibliography.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node = {}; 4 | 5 | CSL.Node.bibliography = { 6 | build: function (state, target) { 7 | if (this.tokentype === CSL.START) { 8 | 9 | state.build.area = "bibliography"; 10 | state.build.root = "bibliography"; 11 | state.build.extension = ""; 12 | 13 | var func = function(state) { 14 | state.tmp.area = "bibliography"; 15 | state.tmp.root = "bibliography"; 16 | state.tmp.extension = ""; 17 | }; 18 | this.execs.push(func); 19 | 20 | } 21 | target.push(this); 22 | } 23 | }; 24 | 25 | -------------------------------------------------------------------------------- /src/node_choose.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node.choose = { 4 | build: function (state, target) { 5 | var func; 6 | if (this.tokentype === CSL.START) { 7 | //open condition 8 | func = function (state) { 9 | state.tmp.jump.push(undefined, CSL.LITERAL); 10 | }; 11 | } 12 | if (this.tokentype === CSL.END) { 13 | //close condition 14 | func = function (state) { 15 | state.tmp.jump.pop(); 16 | }; 17 | } 18 | this.execs.push(func); 19 | target.push(this); 20 | }, 21 | 22 | configure: function (state, pos) { 23 | if (this.tokentype === CSL.END) { 24 | state.configure.fail.push((pos)); 25 | state.configure.succeed.push((pos)); 26 | } else { 27 | state.configure.fail.pop(); 28 | state.configure.succeed.pop(); 29 | } 30 | } 31 | }; 32 | -------------------------------------------------------------------------------- /src/node_comment.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["#comment"] = { 4 | // This is a comment in the CSL file. 5 | build: function () { 6 | // Save some space in the log files -- no need to mention this, really. 7 | // CSL.debug("CSL processor warning: comment node reached"); 8 | } 9 | }; 10 | -------------------------------------------------------------------------------- /src/node_condition.js: -------------------------------------------------------------------------------- 1 | CSL.Node["condition"] = { 2 | build: function (state) { 3 | if (this.tokentype === CSL.SINGLETON) { 4 | var test = state.fun.match[this.match](this, state, this.tests); 5 | state.tmp.conditions.addTest(test); 6 | } 7 | } 8 | }; 9 | -------------------------------------------------------------------------------- /src/node_conditions.js: -------------------------------------------------------------------------------- 1 | CSL.Node["conditions"] = { 2 | build: function (state) { 3 | if (this.tokentype === CSL.START) { 4 | state.tmp.conditions.addMatch(this.match); 5 | } 6 | if (this.tokentype === CSL.END) { 7 | state.tmp.conditions.matchCombine(); 8 | } 9 | } 10 | }; 11 | -------------------------------------------------------------------------------- /src/node_else.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["else"] = { 4 | build: function (state, target) { 5 | target.push(this); 6 | }, 7 | configure: function (state, pos) { 8 | if (this.tokentype === CSL.START) { 9 | state.configure.fail[(state.configure.fail.length - 1)] = pos; 10 | } 11 | } 12 | }; 13 | 14 | -------------------------------------------------------------------------------- /src/node_elseif.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["else-if"] = { 4 | // 5 | // these function are the same as those in if, might just clone 6 | build: function (state, target) { 7 | CSL.Conditions.TopNode.call(this, state, target); 8 | target.push(this); 9 | }, 10 | configure: function (state, pos) { 11 | CSL.Conditions.Configure.call(this, state, pos); 12 | } 13 | }; 14 | -------------------------------------------------------------------------------- /src/node_etal.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["et-al"] = { 4 | build: function (state, target) { 5 | if (state.build.area === "citation" || state.build.area === "bibliography") { 6 | var func = function (state) { 7 | state.tmp.etal_node = this; 8 | if ("string" === typeof this.strings.term) { 9 | state.tmp.etal_term = this.strings.term; 10 | } 11 | }; 12 | this.execs.push(func); 13 | } 14 | target.push(this); 15 | } 16 | }; 17 | -------------------------------------------------------------------------------- /src/node_if.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["if"] = { 4 | build: function (state, target) { 5 | CSL.Conditions.TopNode.call(this, state, target); 6 | target.push(this); 7 | }, 8 | configure: function (state, pos) { 9 | CSL.Conditions.Configure.call(this, state, pos); 10 | } 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /src/node_info.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node.info = { 4 | build: function (state) { 5 | if (this.tokentype === CSL.START) { 6 | state.build.skip = "info"; 7 | } else { 8 | state.build.skip = false; 9 | } 10 | } 11 | }; 12 | 13 | -------------------------------------------------------------------------------- /src/node_institutionpart.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["institution-part"] = { 4 | build: function (state, target) { 5 | var func; 6 | if ("long" === this.strings.name) { 7 | if (this.strings["if-short"]) { 8 | func = function (state) { 9 | state.nameOutput.institutionpart["long-with-short"] = this; 10 | }; 11 | } else { 12 | func = function (state) { 13 | state.nameOutput.institutionpart["long"] = this; 14 | }; 15 | } 16 | } else if ("short" === this.strings.name) { 17 | func = function (state) { 18 | state.nameOutput.institutionpart["short"] = this; 19 | }; 20 | } 21 | this.execs.push(func); 22 | target.push(this); 23 | } 24 | }; 25 | -------------------------------------------------------------------------------- /src/node_intext.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node.intext = { 4 | build: function (state, target) { 5 | if (this.tokentype === CSL.START) { 6 | 7 | state.build.area = "intext"; 8 | state.build.root = "intext"; 9 | state.build.extension = ""; 10 | 11 | var func = function(state, Item) { 12 | state.tmp.area = "intext"; 13 | state.tmp.root = "intext"; 14 | state.tmp.extension = ""; 15 | } 16 | this.execs.push(func); 17 | } 18 | if (this.tokentype === CSL.END) { 19 | 20 | // Do whatever cs:citation does with sorting. 21 | state.intext_sort = { 22 | opt: { 23 | sort_directions: state.citation_sort.opt.sort_directions 24 | } 25 | } 26 | state.intext.srt = state.citation.srt; 27 | } 28 | target.push(this); 29 | } 30 | }; 31 | 32 | -------------------------------------------------------------------------------- /src/node_macro.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node.macro = { 4 | build: function () {} 5 | }; 6 | -------------------------------------------------------------------------------- /src/node_namepart.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.Node["name-part"] = { 4 | build: function (state) { 5 | state.build[this.strings.name] = this; 6 | } 7 | }; 8 | -------------------------------------------------------------------------------- /src/obj_ambigconfig.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | /** 4 | * Ambiguous Cite Configuration Object 5 | * @class 6 | */ 7 | CSL.AmbigConfig = function () { 8 | this.maxvals = []; 9 | this.minval = 1; 10 | this.names = []; 11 | this.givens = []; 12 | this.year_suffix = false; 13 | this.disambiguate = 0; 14 | }; 15 | -------------------------------------------------------------------------------- /src/print.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | if ("undefined" === typeof console) { 4 | CSL.debug = function (str) { 5 | dump("CSL: " + str + "\n"); 6 | }; 7 | CSL.error = function (str) { 8 | dump("CSL error: " + str + "\n"); 9 | }; 10 | } else { 11 | CSL.debug = function (str) { 12 | console.log("CSL: " + str); 13 | }; 14 | CSL.error = function (str) { 15 | //print("CSL error: " + str + "\n"); 16 | console.log("CSL error: " + str); 17 | }; 18 | } 19 | -------------------------------------------------------------------------------- /src/print_zotero.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true, Zotero: true */ 2 | 3 | CSL.debug = function (str) { 4 | Zotero.debug("CSL: " + str); 5 | }; 6 | 7 | CSL.error = function (str) { 8 | Zotero.debug("CSL error: " + str); 9 | }; 10 | 11 | function DOMParser() { 12 | return Components.classes["@mozilla.org/xmlextras/domparser;1"] 13 | .createInstance(Components.interfaces.nsIDOMParser); 14 | } 15 | -------------------------------------------------------------------------------- /src/system.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.setupXml = function(xmlObject) { 4 | var dataObj = {}; 5 | var parser = null; 6 | if ("undefined" !== typeof xmlObject) { 7 | if ("string" === typeof xmlObject) { 8 | xmlObject = xmlObject.replace("^\uFEFF", "") 9 | .replace(/^\s+/, ""); 10 | if (xmlObject.slice(0, 1) === "<") { 11 | // Assume serialized XML 12 | dataObj = CSL.parseXml(xmlObject); 13 | } else { 14 | // Assume serialized JSON 15 | dataObj = JSON.parse(xmlObject); 16 | } 17 | parser = new CSL.XmlJSON(dataObj); 18 | } else if ("undefined" !== typeof xmlObject.getAttribute) { 19 | // Assume DOM instance 20 | parser = new CSL.XmlDOM(xmlObject); 21 | } else if ("undefined" !== typeof xmlObject.toXMLString) { 22 | // Assume E4X object 23 | parser = new CSL.XmlE4X(xmlObject); 24 | } else { 25 | // Assume JS object 26 | parser = new CSL.XmlJSON(xmlObject); 27 | } 28 | } else { 29 | CSL.error("unable to parse XML input"); 30 | } 31 | if (!parser) { 32 | CSL.error("citeproc-js error: unable to parse CSL style or locale object"); 33 | } 34 | return parser; 35 | }; 36 | -------------------------------------------------------------------------------- /src/util_integration.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | 4 | CSL.Engine.prototype.setCitationId = function (citation, force) { 5 | var ret, id, direction; 6 | ret = false; 7 | if (!citation.citationID || force) { 8 | id = Math.floor(Math.random() * 100000000000000); 9 | while (true) { 10 | direction = 0; 11 | if (!this.registry.citationreg.citationById[id]) { 12 | // In case the ID is used as an HTML identifier in the 13 | // calling application. 14 | // https://github.com/Juris-M/citeproc-js/issues/22 15 | citation.citationID = "a" + id.toString(32); 16 | break; 17 | } else if (!direction && id < 50000000000000) { 18 | direction = 1; 19 | } else { 20 | direction = -1; 21 | } 22 | if (direction === 1) { 23 | id += 1; 24 | } else { 25 | id += -1; 26 | } 27 | } 28 | ret = "" + id; 29 | } 30 | this.registry.citationreg.citationById[citation.citationID] = citation; 31 | return ret; 32 | }; 33 | -------------------------------------------------------------------------------- /src/util_names_tests.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | CSL.NameOutput.prototype.isPerson = function (value) { 4 | if (value.literal 5 | || (!value.given && value.family && value.isInstitution)) { 6 | 7 | return false; 8 | } else { 9 | return true; 10 | } 11 | }; 12 | -------------------------------------------------------------------------------- /src/util_sort.js: -------------------------------------------------------------------------------- 1 | /*global CSL: true */ 2 | 3 | /** 4 | * Helper functions for constructing sort keys. 5 | * @namespace Sort key utilities 6 | */ 7 | CSL.Util.Sort = {}; 8 | 9 | /** 10 | * Strip prepositions from a string 11 | *

Used when generating sort keys.

12 | */ 13 | CSL.Util.Sort.strip_prepositions = function (str) { 14 | var m; 15 | if ("string" === typeof str) { 16 | m = str.match(/^(([aA]|[aA][nN]|[tT][hH][eE])\s+)/); 17 | } 18 | if (m) { 19 | str = str.substr(m[1].length); 20 | } 21 | return str; 22 | }; 23 | -------------------------------------------------------------------------------- /tools/CHARS.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys 4 | 5 | def toNum(str): 6 | return int(str, base=16) 7 | 8 | 9 | nums = [ 10 | ["0590", "05ff"], 11 | ["0080", "017f"], 12 | ["0400", "052f"], 13 | ["0370", "03ff"], 14 | ["1f00", "1fff"], 15 | ["0600", "06ff"], 16 | ["202a", "202e"], 17 | ["200c"], 18 | ["200d"], 19 | ["200e"], 20 | ["0218"], 21 | ["0219"], 22 | ["021a"], 23 | ["021b"] 24 | ] 25 | 26 | lst = []; 27 | for num in nums: 28 | if len(num) == 2: 29 | start = toNum(num[0]) 30 | end = toNum(num[1]) 31 | while start <= end: 32 | lst.append(["U+%s" % hex(start), unichr(start)]) 33 | start += 1 34 | else: 35 | lst.append(["U+%s" % toNum(num[0]), unichr(toNum(num[0]))]) 36 | for v,c in lst: 37 | print "%s = %s" % (v, c) 38 | -------------------------------------------------------------------------------- /tools/CONV.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys 4 | 5 | text = open(sys.argv[1]).read().decode("utf8") 6 | 7 | for char in text: 8 | if ord(char) > 256: 9 | c = hex(ord(char))[2:] 10 | while len(c) < 4: 11 | c = "0" + c 12 | 13 | sys.stdout.write("\u%s" % (c,)) 14 | else: 15 | sys.stdout.write(char) 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /tools/REPLACE.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | cd $(dirname $0) 4 | 5 | cd .. 6 | 7 | 8 | if [ "$1" == "--action" ]; then 9 | ACTION="1" 10 | shift 11 | fi 12 | 13 | if [ "$2" == "" ]; then 14 | echo Must give two values. First is the value to replace, the second is the replacement value. 15 | exit 1 16 | fi 17 | if [ "$3" != "" ]; then 18 | echo Must give ONLY two values. First is the value to replace, the second is the replacement value. 19 | exit 1 20 | fi 21 | 22 | 23 | if [ "$2" == "NOTHING" ]; then 24 | ARG2="" 25 | else 26 | ARG2="$2" 27 | fi 28 | for i in ./tests/std/humans/*.txt; do 29 | if [ $(grep -c "${1}" $i) -gt 0 ]; then 30 | if [ "$ACTION" == "1" ]; then 31 | #cat $i | sed -e "s~$1~${ARG2}~g" > $i.NEW 32 | cat $i | sed -e "s~${1}~${ARG2}~g" > $i.NEW 33 | mv $i.NEW $i 34 | else 35 | echo "-----OLD-----" 36 | grep "${1}" $i 37 | echo "-----NEW-----" 38 | grep "${1}" $i | sed -e "s~${1}~${ARG2}~g" 39 | fi 40 | fi 41 | done 42 | -------------------------------------------------------------------------------- /tools/absorb-styles.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python 2 | 3 | import sys,os,os.path,re 4 | 5 | scriptpath = os.path.dirname(sys.argv[0]) 6 | styledir = os.path.join(scriptpath,"..","tests","fixtures","std","styles") 7 | styledir = os.path.abspath(styledir) 8 | 9 | path = sys.argv[1] 10 | 11 | count = 0 12 | 13 | for filename in os.listdir(path): 14 | if filename.find("_") == -1: continue 15 | if not filename.endswith(".txt"): continue 16 | filepath = os.path.join(path,filename) 17 | txt = open(filepath).read() 18 | rex = '(?sm)^(.*>>=.*CSL[^\n]+)\n(.*)(\n<<=.*CSL.*)' 19 | m = re.match(rex,txt) 20 | if (m): 21 | if m.group(2).endswith(".csl"): 22 | count += 1 23 | scriptpath = os.path.join(styledir,m.group(2)) 24 | style = open(scriptpath).read() 25 | txt = re.sub(rex,"\\1\n%s\\3" % (style,),txt) 26 | open(filepath,"w+").write(txt) 27 | -------------------------------------------------------------------------------- /tools/getIANA.sh: -------------------------------------------------------------------------------- 1 | wget http://www.iana.org/assignments/language-subtag-registry 2 | -------------------------------------------------------------------------------- /tools/populate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | set -e 4 | 5 | ./test.py -B 6 | cp citeproc.js ~/src/JM/propachi-vanilla/chrome/content/citeproc.js 7 | 8 | cat citeproc.js \ 9 | | sed -s 's/this\.development_extensions\.main_title_from_short_title = false/this\.development_extensions\.main_title_from_short_title = true/' \ 10 | | sed -s 's/this\.development_extensions\.uppercase_subtitles = false/this\.development_extensions\.uppercase_subtitles = true/' \ 11 | > ~/src/JM/propachi-upper/chrome/content/citeproc.js 12 | 13 | cp citeproc.js ~/src/JM/jurism/chrome/content/zotero/xpcom/citeproc.js 14 | 15 | cp citeproc.js ~/src/JM/juris-m-top/js/citeproc.js 16 | --------------------------------------------------------------------------------