citeproc 1.0.7 → 1.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +0 -3
- data/lib/citeproc/version.rb +1 -1
- metadata +4 -1606
- data/.rspec +0 -3
- data/.simplecov +0 -4
- data/Guardfile +0 -14
- data/cucumber.yml +0 -1
- data/features/affix/InterveningEmpty.feature +0 -52
- data/features/affix/PrefixFullCitationTextOnly.feature +0 -41
- data/features/affix/PrefixWithDecorations.feature +0 -41
- data/features/affix/SuppressDelimiterCharsWhenFullStopInSuffix.feature +0 -410
- data/features/affix/TextNodeWithMacro.feature +0 -40
- data/features/affix/WithCommas.feature +0 -987
- data/features/affix/WordProcessorAffixNoSpace.feature +0 -41
- data/features/api/SuppressAuthor.feature +0 -48
- data/features/api/UpdateItemsDelete.feature +0 -44
- data/features/api/UpdateItemsDeleteDecrementsByCiteDisambiguation.feature +0 -46
- data/features/api/UpdateItemsReshuffle.feature +0 -44
- data/features/bibheader/EntryspacingDefaultValueOne.feature +0 -37
- data/features/bibheader/EntryspacingExplicitValueZero.feature +0 -38
- data/features/bibheader/SecondFieldAlign.feature +0 -38
- data/features/bibheader/SecondFieldAlignWithAuthor.feature +0 -40
- data/features/bibheader/SecondFieldAlignWithNumber.feature +0 -44
- data/features/bibsection/Exclude.feature +0 -47
- data/features/bibsection/Include.feature +0 -47
- data/features/bibsection/Quash.feature +0 -48
- data/features/bibsection/Select.feature +0 -47
- data/features/bugreports/Abnt.feature +0 -59
- data/features/bugreports/AccidentalAllCaps.feature +0 -813
- data/features/bugreports/AllCapsLeakage.feature +0 -818
- data/features/bugreports/ApostropheOnParticle.feature +0 -35
- data/features/bugreports/AsaSpacing.feature +0 -49
- data/features/bugreports/AsmJournals.feature +0 -153
- data/features/bugreports/AuthorYear.feature +0 -343
- data/features/bugreports/AutomaticallyDeleteItemsFails.feature +0 -154
- data/features/bugreports/BadCitationUpdate.feature +0 -39
- data/features/bugreports/BrokenInstitutionalName.feature +0 -390
- data/features/bugreports/ChicagoAuthorDateLooping.feature +0 -388
- data/features/bugreports/ChineseCharactersFamilyOnlyPluralLabel.feature +0 -36
- data/features/bugreports/CitationSortsWithEtAl.feature +0 -74
- data/features/bugreports/CollapseFailure.feature +0 -72
- data/features/bugreports/ContainerTitleShort.feature +0 -45
- data/features/bugreports/ContentPunctuationDuplicate1.feature +0 -40
- data/features/bugreports/ContextualPluralWithMainItemFields.feature +0 -34
- data/features/bugreports/CreepingAddNames.feature +0 -223
- data/features/bugreports/DelimiterBug.feature +0 -984
- data/features/bugreports/DelimitersOnLocator.feature +0 -322
- data/features/bugreports/DemoPageFullCiteCruftOnSubsequent.feature +0 -711
- data/features/bugreports/DisambiguationAddNames.feature +0 -233
- data/features/bugreports/DisambiguationAddNamesBibliography.feature +0 -235
- data/features/bugreports/DroppingGroupDelimiterSpace.feature +0 -37
- data/features/bugreports/DuplicateSpaces.feature +0 -151
- data/features/bugreports/DuplicateSpaces2.feature +0 -333
- data/features/bugreports/DuplicateSpaces3.feature +0 -200
- data/features/bugreports/DuplicateTerminalPunctuationInBibliography.feature +0 -227
- data/features/bugreports/EmptyIfMatchNoneFail.feature +0 -38
- data/features/bugreports/EtAlSubsequent.feature +0 -41
- data/features/bugreports/FourAndFour.feature +0 -715
- data/features/bugreports/FrenchApostrophe.feature +0 -34
- data/features/bugreports/GreekStyleProblems.feature +0 -1201
- data/features/bugreports/GreekStyleTwoEditors.feature +0 -1201
- data/features/bugreports/IeeePunctuation.feature +0 -151
- data/features/bugreports/LabelsOutOfPlace.feature +0 -715
- data/features/bugreports/MovePunctuationInsideQuotesForLocator.feature +0 -714
- data/features/bugreports/NoEventInNestedMacroWithOldProcessor.feature +0 -120
- data/features/bugreports/NoTitle.feature +0 -346
- data/features/bugreports/NumberAffixEscape.feature +0 -35
- data/features/bugreports/NumberInMacroWithVerticalAlign.feature +0 -36
- data/features/bugreports/NumericStyleFirstRefMultipleCiteFailure.feature +0 -148
- data/features/bugreports/OldMhraDisambiguationFailure.feature +0 -411
- data/features/bugreports/ProcessorHang1.feature +0 -209
- data/features/bugreports/SingleQuote.feature +0 -151
- data/features/bugreports/SingletonIfMatchNoneFail.feature +0 -38
- data/features/bugreports/SortSecondaryKey.feature +0 -233
- data/features/bugreports/SortSecondaryKeyBibliography.feature +0 -235
- data/features/bugreports/SortedIeeeItalicsFail.feature +0 -296
- data/features/bugreports/ThesisUniversityAppearsTwice.feature +0 -715
- data/features/bugreports/TitleCase.feature +0 -33
- data/features/bugreports/TwoCitesPlusOneBackref.feature +0 -963
- data/features/bugreports/TwoFullStops.feature +0 -394
- data/features/bugreports/UndefinedInName.feature +0 -199
- data/features/bugreports/UndefinedInName2.feature +0 -184
- data/features/bugreports/UndefinedInName3.feature +0 -351
- data/features/bugreports/UndefinedNotString.feature +0 -144
- data/features/bugreports/UndefinedStr.feature +0 -151
- data/features/bugreports/UnisaHarvardInitialization.feature +0 -62
- data/features/bugreports/YearSuffixInHarvard1.feature +0 -205
- data/features/bugreports/YearSuffixLingers.feature +0 -55
- data/features/bugreports/disambiguate.feature +0 -343
- data/features/bugreports/ikeyOne.feature +0 -277
- data/features/bugreports/parenthesis.feature +0 -333
- data/features/bugreports/parseName.feature +0 -46
- data/features/bugreports/undefinedCrash.feature +0 -150
- data/features/collapse/AuthorCollapse.feature +0 -41
- data/features/collapse/AuthorCollapseDifferentAuthorsOneWithEtAl.feature +0 -43
- data/features/collapse/AuthorCollapseNoDate.feature +0 -41
- data/features/collapse/AuthorCollapseNoDateSorted.feature +0 -45
- data/features/collapse/CitationNumberRangesInsert.feature +0 -39
- data/features/collapse/CitationNumberRangesMixed.feature +0 -39
- data/features/collapse/CitationNumberRangesMixed2.feature +0 -39
- data/features/collapse/CitationNumberRangesMixed3.feature +0 -39
- data/features/collapse/CitationNumberRangesOneOnly.feature +0 -41
- data/features/collapse/CitationNumberRangesWithAffixes.feature +0 -35
- data/features/collapse/CitationNumberRangesWithAffixesGrouped.feature +0 -51
- data/features/collapse/CitationNumberRangesWithAffixesGroupedLocator.feature +0 -51
- data/features/collapse/CitationNumberRangesWithAffixesNoCollapse.feature +0 -36
- data/features/collapse/NumericDuplicate.feature +0 -37
- data/features/collapse/NumericDuplicate2.feature +0 -34
- data/features/collapse/TrailingDelimiter.feature +0 -57
- data/features/collapse/YearSuffixCollapse.feature +0 -46
- data/features/collapse/YearSuffixCollapseNoRange.feature +0 -46
- data/features/collapse/YearSuffixCollapseNoYearSuffixDelimiter.feature +0 -45
- data/features/collapse/YearSuffixImplicitCollapseNoYearSuffixDelimiter.feature +0 -44
- data/features/condition/EmptyDate.feature +0 -42
- data/features/condition/EmptyIsNumericFalse.feature +0 -40
- data/features/condition/EmptyIsUncertainDateFalse.feature +0 -40
- data/features/condition/EmptyShortTitleFalse.feature +0 -40
- data/features/condition/FirstNullAny.feature +0 -38
- data/features/condition/IsNumeric.feature +0 -49
- data/features/condition/LocatorIsFalse.feature +0 -50
- data/features/condition/MatchAll.feature +0 -43
- data/features/condition/NameAndTextVars.feature +0 -56
- data/features/condition/NumberIsNumeric.feature +0 -40
- data/features/condition/NumeralIsNumeric.feature +0 -40
- data/features/condition/NumeralWithTextIsNumeric.feature +0 -40
- data/features/condition/RefTypeBranching.feature +0 -119
- data/features/condition/SingletonIfMatchNone.feature +0 -41
- data/features/condition/TextIsNotNumeric.feature +0 -40
- data/features/condition/VariableAll.feature +0 -41
- data/features/condition/VariableAny.feature +0 -41
- data/features/condition/VariableNone.feature +0 -41
- data/features/date/Accessed.feature +0 -33
- data/features/date/DateAD.feature +0 -37
- data/features/date/DateBC.feature +0 -37
- data/features/date/DateNoDateNoTest.feature +0 -37
- data/features/date/DateNoDateWithTest.feature +0 -45
- data/features/date/DayOrdinalDayOneOnly.feature +0 -44
- data/features/date/IgnoreNonexistentSort.feature +0 -37
- data/features/date/InPress.feature +0 -38
- data/features/date/January.feature +0 -33
- data/features/date/KeyVariable.feature +0 -46
- data/features/date/LiteralFailGracefullyIfNoValue.feature +0 -38
- data/features/date/LocalizedDateFormats-af-ZA.feature +0 -57
- data/features/date/LocalizedDateFormats-ar-AR.feature +0 -57
- data/features/date/LocalizedDateFormats-bg-BG.feature +0 -57
- data/features/date/LocalizedDateFormats-ca-AD.feature +0 -57
- data/features/date/LocalizedDateFormats-cs-CZ.feature +0 -57
- data/features/date/LocalizedDateFormats-da-DK.feature +0 -57
- data/features/date/LocalizedDateFormats-de-AT.feature +0 -57
- data/features/date/LocalizedDateFormats-de-CH.feature +0 -57
- data/features/date/LocalizedDateFormats-de-DE.feature +0 -57
- data/features/date/LocalizedDateFormats-el-GR.feature +0 -57
- data/features/date/LocalizedDateFormats-en-US.feature +0 -57
- data/features/date/LocalizedDateFormats-es-ES.feature +0 -57
- data/features/date/LocalizedDateFormats-et-EE.feature +0 -57
- data/features/date/LocalizedDateFormats-fr-FR.feature +0 -57
- data/features/date/LocalizedDateFormats-he-IL.feature +0 -57
- data/features/date/LocalizedDateFormats-hu-HU.feature +0 -57
- data/features/date/LocalizedDateFormats-is-IS.feature +0 -57
- data/features/date/LocalizedDateFormats-it-IT.feature +0 -57
- data/features/date/LocalizedDateFormats-ja-JP.feature +0 -57
- data/features/date/LocalizedDateFormats-kh-KH.feature +0 -46
- data/features/date/LocalizedDateFormats-ko-KR.feature +0 -57
- data/features/date/LocalizedDateFormats-mn-MN.feature +0 -57
- data/features/date/LocalizedDateFormats-nb-NO.feature +0 -57
- data/features/date/LocalizedDateFormats-nl-NL.feature +0 -57
- data/features/date/LocalizedDateFormats-pl-PL.feature +0 -57
- data/features/date/LocalizedDateFormats-pt-BR.feature +0 -57
- data/features/date/LocalizedDateFormats-pt-PT.feature +0 -57
- data/features/date/LocalizedDateFormats-ro-RO.feature +0 -57
- data/features/date/LocalizedDateFormats-ru-RU.feature +0 -57
- data/features/date/LocalizedDateFormats-sk-SK.feature +0 -57
- data/features/date/LocalizedDateFormats-sl-SL.feature +0 -57
- data/features/date/LocalizedDateFormats-sr-RS.feature +0 -57
- data/features/date/LocalizedDateFormats-sv-SE.feature +0 -57
- data/features/date/LocalizedDateFormats-th-TH.feature +0 -57
- data/features/date/LocalizedDateFormats-tr-TR.feature +0 -57
- data/features/date/LocalizedDateFormats-uk-UA.feature +0 -57
- data/features/date/LocalizedDateFormats-vi-VN.feature +0 -57
- data/features/date/LocalizedDateFormats-zh-CN.feature +0 -57
- data/features/date/LocalizedDateFormats-zh-TW.feature +0 -57
- data/features/date/LocalizedNumericDefault.feature +0 -33
- data/features/date/LocalizedNumericDefaultMissingDay.feature +0 -33
- data/features/date/LocalizedNumericDefaultWithAffixes.feature +0 -33
- data/features/date/LocalizedNumericYear.feature +0 -33
- data/features/date/LocalizedNumericYearMonth.feature +0 -33
- data/features/date/LocalizedNumericYearRange.feature +0 -33
- data/features/date/LocalizedNumericYearWithAffixes.feature +0 -33
- data/features/date/LocalizedTextDefault.feature +0 -33
- data/features/date/LocalizedTextDefaultMissingDay.feature +0 -33
- data/features/date/LocalizedTextDefaultWithAffixes.feature +0 -33
- data/features/date/LocalizedTextInStyleLocaleWithTextCase.feature +0 -42
- data/features/date/LocalizedTextMonthFormOverride.feature +0 -35
- data/features/date/LocalizedTextYear.feature +0 -33
- data/features/date/LocalizedTextYearMonth.feature +0 -33
- data/features/date/LocalizedTextYearWithAffixes.feature +0 -33
- data/features/date/LocalizedWithInStyleFormatting.feature +0 -35
- data/features/date/LoneJapaneseMonth.feature +0 -33
- data/features/date/LongMonth.feature +0 -37
- data/features/date/LopsidedDataYearSuffixCollapse.feature +0 -43
- data/features/date/MaskNonexistentWithCondition.feature +0 -42
- data/features/date/NegativeDateSort.feature +0 -40
- data/features/date/NegativeDateSortViaMacro.feature +0 -43
- data/features/date/NegativeDateSortViaMacroOnYearMonthOnly.feature +0 -53
- data/features/date/NoDate.feature +0 -45
- data/features/date/NonexistentSortReverseBibliography.feature +0 -47
- data/features/date/NonexistentSortReverseCitation.feature +0 -37
- data/features/date/OtherAlone.feature +0 -37
- data/features/date/OtherWithDate.feature +0 -37
- data/features/date/RawParseSimpleDate.feature +0 -37
- data/features/date/RawSeasonRange1.feature +0 -33
- data/features/date/RawSeasonRange2.feature +0 -33
- data/features/date/RawSeasonRange3.feature +0 -33
- data/features/date/SeasonSubstituteInGroup.feature +0 -38
- data/features/date/SortEmptyDatesBibliography.feature +0 -53
- data/features/date/SortEmptyDatesCitation.feature +0 -42
- data/features/date/String.feature +0 -36
- data/features/date/TextFormFulldateDayRange.feature +0 -37
- data/features/date/TextFormFulldateMonthRange.feature +0 -37
- data/features/date/TextFormFulldateYearRange.feature +0 -37
- data/features/date/TextFormMonthdateMonthRange.feature +0 -37
- data/features/date/TextFormMonthdateYearRange.feature +0 -37
- data/features/date/TextFormYeardateYearRange.feature +0 -37
- data/features/date/TextFormYeardateYearRangeOpen.feature +0 -37
- data/features/date/Uncertain.feature +0 -42
- data/features/date/VariousInvalidDates.feature +0 -37
- data/features/date/YearSuffixDelimiter.feature +0 -44
- data/features/date/YearSuffixImplicitWithNoDate.feature +0 -54
- data/features/date/YearSuffixImplicitWithNoDateOneOnly.feature +0 -54
- data/features/date/YearSuffixWithNoDate.feature +0 -54
- data/features/decorations/AndTermUnaffectedByNameDecorations.feature +0 -38
- data/features/decorations/Baseline.feature +0 -48
- data/features/decorations/NestedQuotes.feature +0 -33
- data/features/decorations/NestedQuotesInnerReverse.feature +0 -33
- data/features/decorations/NoNormalWithoutDecoration.feature +0 -41
- data/features/decorations/SimpleFlipFlop.feature +0 -33
- data/features/decorations/SimpleQuotes.feature +0 -33
- data/features/disambiguate/AddNamesFailure.feature +0 -43
- data/features/disambiguate/AddNamesFailureWithAddGivenname.feature +0 -44
- data/features/disambiguate/AddNamesSuccess.feature +0 -43
- data/features/disambiguate/AllNamesBaseNameCountOnFailureIfYearSuffixAvailable.feature +0 -55
- data/features/disambiguate/AllNamesGenerally.feature +0 -44
- data/features/disambiguate/AllNamesSimpleSequence.feature +0 -42
- data/features/disambiguate/AllNamesWithInitialsGenerally.feature +0 -44
- data/features/disambiguate/AndreaEg1a.feature +0 -47
- data/features/disambiguate/AndreaEg1b.feature +0 -48
- data/features/disambiguate/AndreaEg1c.feature +0 -47
- data/features/disambiguate/AndreaEg2.feature +0 -49
- data/features/disambiguate/AndreaEg3.feature +0 -50
- data/features/disambiguate/AndreaEg4.feature +0 -52
- data/features/disambiguate/AndreaEg5.feature +0 -53
- data/features/disambiguate/BasedOnEtAlSubsequent.feature +0 -44
- data/features/disambiguate/BasedOnSubsequentFormWithBackref.feature +0 -63
- data/features/disambiguate/BasedOnSubsequentFormWithLocator.feature +0 -67
- data/features/disambiguate/ByCiteBaseNameCountOnFailureIfYearSuffixAvailable.feature +0 -47
- data/features/disambiguate/ByCiteDisambiguateCondition.feature +0 -54
- data/features/disambiguate/ByCiteGivennameExpandCrossNestedNames.feature +0 -40
- data/features/disambiguate/ByCiteGivennameNoShortFormInitializeWith.feature +0 -39
- data/features/disambiguate/ByCiteGivennameShortFormInitializeWith.feature +0 -40
- data/features/disambiguate/ByCiteGivennameShortFormNoInitializeWith.feature +0 -39
- data/features/disambiguate/ByCiteIncremental1.feature +0 -355
- data/features/disambiguate/ByCiteIncremental2.feature +0 -352
- data/features/disambiguate/ByCiteIsDefault.feature +0 -250
- data/features/disambiguate/ByCiteMinimalGivennameExpandMinimalNames.feature +0 -48
- data/features/disambiguate/ByCiteRetainNamesOnFailureIfYearSuffixNotAvailable.feature +0 -46
- data/features/disambiguate/ByCiteTwoAuthorsSameCite.feature +0 -38
- data/features/disambiguate/ByCiteTwoAuthorsSameFamilyName.feature +0 -44
- data/features/disambiguate/CitationLabelDefault.feature +0 -34
- data/features/disambiguate/CitationLabelInData.feature +0 -34
- data/features/disambiguate/DifferentSpacingInInitials.feature +0 -40
- data/features/disambiguate/DisambiguateTrueAndYearSuffixOne.feature +0 -220
- data/features/disambiguate/DisambiguateTrueAndYearSuffixTwo.feature +0 -220
- data/features/disambiguate/DisambiguateWithThree.feature +0 -48
- data/features/disambiguate/DisambiguateWithThree2.feature +0 -91
- data/features/disambiguate/DisambiguationHang.feature +0 -48
- data/features/disambiguate/ExtraTextCitation.feature +0 -44
- data/features/disambiguate/FailWithYearSuffix.feature +0 -390
- data/features/disambiguate/FamilyNameOnly.feature +0 -43
- data/features/disambiguate/HonorFullnameInBibliography.feature +0 -49
- data/features/disambiguate/ImplicitYearSuffixOnceOnly.feature +0 -56
- data/features/disambiguate/IncrementalExtraText.feature +0 -55
- data/features/disambiguate/InitializeWithButNoDisambiguation.feature +0 -292
- data/features/disambiguate/LastOnlyFailWithByCite.feature +0 -49
- data/features/disambiguate/NoTextElementUsesYearSuffixVariable.feature +0 -39
- data/features/disambiguate/PrimaryNameGenerally.feature +0 -42
- data/features/disambiguate/PrimaryNameWithInitialsLimitedToPrimary.feature +0 -46
- data/features/disambiguate/SetsOfNames.feature +0 -205
- data/features/disambiguate/SkipAccessedYearSuffix.feature +0 -258
- data/features/disambiguate/ThreeNoAuthorNoTitleEntries.feature +0 -63
- data/features/disambiguate/ToInitialOnly.feature +0 -39
- data/features/disambiguate/Trigraph.feature +0 -36
- data/features/disambiguate/YearCollapseWithInstitution.feature +0 -51
- data/features/disambiguate/YearSuffixAndSort.feature +0 -50
- data/features/disambiguate/YearSuffixAtTwoLevels.feature +0 -45
- data/features/disambiguate/YearSuffixFiftyTwoEntries.feature +0 -48
- data/features/disambiguate/YearSuffixFiftyTwoEntriesByCite.feature +0 -48
- data/features/disambiguate/YearSuffixMacroSameYearExplicit.feature +0 -45
- data/features/disambiguate/YearSuffixMacroSameYearImplicit.feature +0 -42
- data/features/disambiguate/YearSuffixMidInsert.feature +0 -391
- data/features/disambiguate/YearSuffixMixedDates.feature +0 -52
- data/features/disambiguate/YearSuffixTwoPairsBibliography.feature +0 -63
- data/features/disambiguate/YearSuffixTwoPairsFirstNameBibliography.feature +0 -65
- data/features/disambiguate/YearSuffixTwoPairsFullNamesBibliography.feature +0 -63
- data/features/disambiguate/YearSuffixWithEtAlSubequent.feature +0 -51
- data/features/disambiguate/YearSuffixWithMixedCreatorTypes.feature +0 -53
- data/features/discretionary/AuthorDateAuthorOnlyThenSuppressAuthor.feature +0 -46
- data/features/discretionary/AuthorOnly.feature +0 -42
- data/features/discretionary/CitationNumberAuthorOnlyThenSuppressAuthor.feature +0 -41
- data/features/discretionary/CitationNumberSuppressAuthor.feature +0 -40
- data/features/discretionary/SuppressAuthorSolo.feature +0 -45
- data/features/discretionary/SuppressEditorSolo.feature +0 -45
- data/features/discretionary/SuppressEditorSubstitute.feature +0 -45
- data/features/discretionary/SuppressMultipleAuthors.feature +0 -45
- data/features/display/AuthorAsHeading.feature +0 -80
- data/features/display/DisplayBlock.feature +0 -54
- data/features/display/SecondFieldAlignClone.feature +0 -65
- data/features/display/SecondFieldAlignMigratePunctuation.feature +0 -154
- data/features/etal/ShortFormOfName.feature +0 -38
- data/features/etal/UseZeroFirst.feature +0 -47
- data/features/flipflop/Apostrophes.feature +0 -1064
- data/features/flipflop/BoldfaceNodeLevelMarkup.feature +0 -33
- data/features/flipflop/ItalicsFlipped.feature +0 -35
- data/features/flipflop/ItalicsSimple.feature +0 -39
- data/features/flipflop/ItalicsWithOk.feature +0 -48
- data/features/flipflop/ItalicsWithOkAndTextcase.feature +0 -48
- data/features/flipflop/LeadingSingleQuote.feature +0 -33
- data/features/flipflop/QuotesInFieldNotOnNode.feature +0 -33
- data/features/flipflop/QuotesNodeLevelMarkup.feature +0 -40
- data/features/flipflop/SingleQuotesOnItalics.feature +0 -33
- data/features/flipflop/SmallCaps.feature +0 -36
- data/features/flipflop/StartingApostrophe.feature +0 -33
- data/features/form/TitleShort.feature +0 -33
- data/features/form/TitleShortNoLong.feature +0 -33
- data/features/form/TitleTestNoLongFalse.feature +0 -40
- data/features/fullstyles/ABdNT.feature +0 -675
- data/features/fullstyles/APA.feature +0 -361
- data/features/fullstyles/ChicagoArticleTitleQuestion.feature +0 -390
- data/features/fullstyles/ChicagoAuthorDateSimple.feature +0 -394
- data/features/fullstyles/ChicagoNoteWithBibliographyWithPublisher.feature +0 -716
- data/features/group/ComplexNesting.feature +0 -397
- data/features/group/ShortOutputOnly.feature +0 -35
- data/features/group/SuppressTermWhenNoOutputFromPartialDate.feature +0 -39
- data/features/group/SuppressValueWithEmptySubgroup.feature +0 -46
- data/features/group/SuppressWithEmptyNestedDateNode.feature +0 -202
- data/features/integration/CitationSort.feature +0 -50
- data/features/integration/CitationSortTwice.feature +0 -51
- data/features/integration/CrossCitationIbidOnInsert.feature +0 -82
- data/features/integration/DeleteName.feature +0 -36
- data/features/integration/DisambiguateAddGivenname1.feature +0 -45
- data/features/integration/DisambiguateAddGivenname2.feature +0 -45
- data/features/integration/DuplicateItem.feature +0 -45
- data/features/integration/DuplicateItem2.feature +0 -45
- data/features/integration/FirstReferenceNoteNumberPositionChange.feature +0 -62
- data/features/integration/IbidOnInsert.feature +0 -50
- data/features/integration/IbidWithDifferentLocators.feature +0 -59
- data/features/integration/SimpleFirstReferenceNoteNumber.feature +0 -61
- data/features/integration/SimpleIbid.feature +0 -57
- data/features/integration/SubsequentWhenInterveningFootnote.feature +0 -51
- data/features/integration/YearSuffixOnOffOn.feature +0 -46
- data/features/label/CollapsedPageNumberPluralDetection.feature +0 -42
- data/features/label/EditorTranslator1.feature +0 -556
- data/features/label/EmptyLabelVanish.feature +0 -43
- data/features/label/ImplicitForm.feature +0 -36
- data/features/label/NoFirstCharCapWithInTextClass.feature +0 -38
- data/features/label/NonexistentNameVariableLabel.feature +0 -36
- data/features/label/PageWithEmbeddedLabel.feature +0 -35
- data/features/label/PluralNumberOfVolumes.feature +0 -36
- data/features/label/PluralPagesWithAlphaPrefix.feature +0 -37
- data/features/locale/EffectOfStyleDefinition.feature +0 -38
- data/features/locale/EmptyDate.feature +0 -41
- data/features/locale/EmptyPlusOverrideDate.feature +0 -48
- data/features/locale/EmptyPlusOverrideStyleOpt.feature +0 -39
- data/features/locale/EmptyPlusOverrideTerm.feature +0 -44
- data/features/locale/EmptyStyleOpt.feature +0 -36
- data/features/locale/EmptyTerm.feature +0 -39
- data/features/locale/ForceEmptyAndOthersTerm.feature +0 -41
- data/features/locale/ForceEmptyEtAlTerm.feature +0 -40
- data/features/locale/NonExistentLocaleDef.feature +0 -48
- data/features/locale/OverloadWithEmptyString.feature +0 -46
- data/features/locale/PageRangeDelimiterTermDefined.feature +0 -38
- data/features/locale/PageRangeDelimiterTermFrenchUndef.feature +0 -34
- data/features/locale/PageRangeDelimiterTermUndefined.feature +0 -33
- data/features/locale/SpecificDate.feature +0 -41
- data/features/locale/SpecificStyleOpt.feature +0 -36
- data/features/locale/SpecificTerm.feature +0 -39
- data/features/locale/TermInSort.feature +0 -77
- data/features/locale/TitleCaseEmptyLangEmptyLocale.feature +0 -33
- data/features/locale/TitleCaseEmptyLangNonEnglishLocale.feature +0 -34
- data/features/locale/TitleCaseEnglishLangUpperEmptyLocale.feature +0 -33
- data/features/locale/TitleCaseGarbageLangEmptyLocale.feature +0 -33
- data/features/locale/TitleCaseGarbageLangEnglishLocale.feature +0 -34
- data/features/locale/TitleCaseGarbageLangNonEnglishLocale.feature +0 -34
- data/features/locale/TitleCaseNonEnglishLangUpperEmptyLocale.feature +0 -33
- data/features/locale/UnknownTerm.feature +0 -34
- data/features/locator/SimpleLocators.feature +0 -46
- data/features/locator/TermSelection.feature +0 -40
- data/features/locator/TrickyEntryForPlurals.feature +0 -40
- data/features/locator/WorkaroundTestForSubVerbo.feature +0 -47
- data/features/magic/AllowRepeatDateRenderings.feature +0 -47
- data/features/magic/CapitalizeFirstOccurringNameParticle.feature +0 -35
- data/features/magic/CapitalizeFirstOccurringTerm.feature +0 -33
- data/features/magic/CitationLabelInBibliography.feature +0 -234
- data/features/magic/CitationLabelInCitation.feature +0 -224
- data/features/magic/EntrySpacingDouble.feature +0 -52
- data/features/magic/HangingIndent.feature +0 -52
- data/features/magic/ImplicitYearSuffixDelimiter.feature +0 -38
- data/features/magic/ImplicitYearSuffixExplicitDelimiter.feature +0 -52
- data/features/magic/LineSpacingDouble.feature +0 -52
- data/features/magic/LineSpacingTripleStretch.feature +0 -52
- data/features/magic/NameParticle.feature +0 -35
- data/features/magic/NameSuffixNoComma.feature +0 -35
- data/features/magic/NameSuffixWithComma.feature +0 -35
- data/features/magic/NumberRangeEnglish.feature +0 -33
- data/features/magic/NumberRangeFrench.feature +0 -34
- data/features/magic/PunctuationInQuoteDefaultEnglishDelimiter.feature +0 -41
- data/features/magic/PunctuationInQuoteDefaultEnglishSuffix.feature +0 -39
- data/features/magic/PunctuationInQuoteDelimiterTrue.feature +0 -44
- data/features/magic/PunctuationInQuoteFalse.feature +0 -44
- data/features/magic/PunctuationInQuoteFalseSuppressExtra.feature +0 -37
- data/features/magic/PunctuationInQuoteNested.feature +0 -47
- data/features/magic/PunctuationInQuoteSuffixTrue.feature +0 -42
- data/features/magic/PunctuationInQuoteTrueSuppressExtra.feature +0 -37
- data/features/magic/QuotesAndBraces1.feature +0 -36
- data/features/magic/QuotesAndBraces2.feature +0 -36
- data/features/magic/SecondFieldAlign.feature +0 -57
- data/features/magic/StripPeriodsExcludeAffixes.feature +0 -44
- data/features/magic/StripPeriodsFalse.feature +0 -34
- data/features/magic/StripPeriodsTrue.feature +0 -34
- data/features/magic/StripPeriodsTrueShortForm.feature +0 -46
- data/features/magic/SubsequentAuthorSubstitute.feature +0 -55
- data/features/magic/SubsequentAuthorSubstituteNotFooled.feature +0 -497
- data/features/magic/SubsequentAuthorSubstituteOfTitleField.feature +0 -55
- data/features/magic/SuperscriptChars.feature +0 -241
- data/features/magic/SuppressDuplicateVariableRendering.feature +0 -43
- data/features/magic/SuppressExtraTerminalPunctuationAfterTerm.feature +0 -410
- data/features/magic/SuppressLayoutDelimiterIfPrefixComma.feature +0 -34
- data/features/magic/TermCapitalizationWithPrefix.feature +0 -49
- data/features/magic/TextRangeEnglish.feature +0 -33
- data/features/magic/TextRangeFrench.feature +0 -34
- data/features/name/AfterInvertedName.feature +0 -42
- data/features/name/AllCapsInitialsUntouched.feature +0 -46
- data/features/name/AndTextDelimiterPrecedesLastAlways.feature +0 -35
- data/features/name/ArticularNameAsSortOrder.feature +0 -35
- data/features/name/ArticularPlain.feature +0 -35
- data/features/name/ArticularShortForm.feature +0 -35
- data/features/name/ArticularShortFormCommaSuffix.feature +0 -35
- data/features/name/ArticularWithComma.feature +0 -35
- data/features/name/ArticularWithCommaNameAsSortOrder.feature +0 -35
- data/features/name/Asian.feature +0 -35
- data/features/name/AsianGlyphs.feature +0 -35
- data/features/name/AuthorCount.feature +0 -39
- data/features/name/AuthorCountWithMultipleVariables.feature +0 -37
- data/features/name/AuthorCountWithSameVarContentAndCombinedTermFail.feature +0 -45
- data/features/name/AuthorCountWithSameVarContentAndCombinedTermSucceed.feature +0 -45
- data/features/name/AuthorEditorCount.feature +0 -37
- data/features/name/CelticClanName.feature +0 -35
- data/features/name/CeltsAndToffsCrowdedInitials.feature +0 -35
- data/features/name/CeltsAndToffsNoHyphens.feature +0 -36
- data/features/name/CeltsAndToffsSpacedInitials.feature +0 -35
- data/features/name/CeltsAndToffsWithHyphens.feature +0 -36
- data/features/name/CollapseRoleLabels.feature +0 -46
- data/features/name/Delimiter.feature +0 -37
- data/features/name/EditorTranslatorBoth.feature +0 -189
- data/features/name/EditorTranslatorSameEmptyTerm.feature +0 -41
- data/features/name/EditorTranslatorSameWithTerm.feature +0 -36
- data/features/name/EditorTranslatorWithTranslatorOnly.feature +0 -35
- data/features/name/EditorTranslatorWithTranslatorOnlyBib.feature +0 -189
- data/features/name/EtAlUseLast.feature +0 -47
- data/features/name/FormattingOfParticles.feature +0 -37
- data/features/name/GreekSimple.feature +0 -35
- data/features/name/HebrewAnd.feature +0 -40
- data/features/name/HierarchicalDelimiter.feature +0 -35
- data/features/name/HyphenatedFirstName.feature +0 -35
- data/features/name/HyphenatedNonDroppingParticle1.feature +0 -51
- data/features/name/HyphenatedNonDroppingParticle2.feature +0 -51
- data/features/name/InheritAttributesEtAlStyle.feature +0 -37
- data/features/name/Institution.feature +0 -35
- data/features/name/InstitutionDecoration.feature +0 -45
- data/features/name/LabelAfterPlural.feature +0 -36
- data/features/name/LabelAfterPluralDecorations.feature +0 -38
- data/features/name/LongAbbreviation.feature +0 -35
- data/features/name/LowercaseSurnameSuffix.feature +0 -35
- data/features/name/MixedFormatsInitialSortOrderAllWithDecorationsEtAl.feature +0 -39
- data/features/name/MixedFormatsInitialSortOrderFirstWithDecorationsEtAl.feature +0 -39
- data/features/name/MixedFormatsInitialsWithDecorationsEtAl.feature +0 -39
- data/features/name/MixedFormatsPrimaryDecorations.feature +0 -37
- data/features/name/MixedFormatsWithDecorationsEtAl.feature +0 -39
- data/features/name/MixedFormatsWithDecorationsPlusAlternateEtAlDecorations.feature +0 -40
- data/features/name/MixedFormatsWithDecorationsPlusEtAlDecorations.feature +0 -40
- data/features/name/MultipleLiteral.feature +0 -35
- data/features/name/NoNameNode.feature +0 -33
- data/features/name/NonDroppingParticleDefault.feature +0 -35
- data/features/name/OnlyFamilyname.feature +0 -35
- data/features/name/OnlyGivenname.feature +0 -35
- data/features/name/OverridingHierarchicalDelimiter.feature +0 -36
- data/features/name/ParseNames.feature +0 -39
- data/features/name/ParsedCommaDelimitedDroppingParticleNormalOrderingWithAffixes.feature +0 -38
- data/features/name/ParsedCommaDelimitedDroppingParticleNormalOrderingWithoutAffixes.feature +0 -36
- data/features/name/ParsedCommaDelimitedDroppingParticleSortOrderingWithoutAffixes.feature +0 -38
- data/features/name/ParsedDroppingParticleWithAffixes.feature +0 -39
- data/features/name/ParsedDroppingParticleWithApostrophe.feature +0 -38
- data/features/name/ParsedNonDroppingParticleWithAffixes.feature +0 -39
- data/features/name/ParsedNonDroppingParticleWithApostrophe.feature +0 -39
- data/features/name/ParsedUpperCaseNonDroppingParticle.feature +0 -39
- data/features/name/ParticleCaps1.feature +0 -40
- data/features/name/ParticleCaps2.feature +0 -46
- data/features/name/ParticleCaps3.feature +0 -47
- data/features/name/ParticleFormatting.feature +0 -38
- data/features/name/ParticlesDemoteNonDroppingNever.feature +0 -99
- data/features/name/PeriodAfterInitials.feature +0 -38
- data/features/name/QuashOrdinaryVariableRenderedViaSubstitute.feature +0 -39
- data/features/name/RomanianTwo.feature +0 -36
- data/features/name/SemicolonWithAnd.feature +0 -38
- data/features/name/SplitInitials.feature +0 -35
- data/features/name/SubsequentAuthorSubstituteMultipleNames.feature +0 -50
- data/features/name/SubstituteInheritLabel.feature +0 -44
- data/features/name/SubstituteMacroInheritDecorations.feature +0 -42
- data/features/name/SubstituteName.feature +0 -38
- data/features/name/SubstituteOnDateGroupSpanFail.feature +0 -45
- data/features/name/SubstituteOnGroupSpanGroupSpanFail.feature +0 -46
- data/features/name/SubstituteOnMacroGroupSpanFail.feature +0 -46
- data/features/name/SubstituteOnNamesSingletonGroupSpanFail.feature +0 -42
- data/features/name/SubstituteOnNamesSpanGroupSpanFail.feature +0 -44
- data/features/name/SubstituteOnNamesSpanNamesSpanFail.feature +0 -43
- data/features/name/SubstituteOnNumberGroupSpanFail.feature +0 -42
- data/features/name/TwoRolesSameRenderingSeparateRoleLabels.feature +0 -43
- data/features/name/WesternArticularLowercase.feature +0 -35
- data/features/name/WesternPrimaryFontStyle.feature +0 -37
- data/features/name/WesternPrimaryFontStyleTwoAuthors.feature +0 -37
- data/features/name/WesternSimple.feature +0 -35
- data/features/name/WesternTwoAuthors.feature +0 -35
- data/features/name/namepartAffixes.feature +0 -38
- data/features/name/namepartAffixesNameAsSortOrder.feature +0 -39
- data/features/name/namepartAffixesNameAsSortOrderDemoteNonDroppingParticle.feature +0 -39
- data/features/nameattr/AndOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/AndOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/AndOnCitationInBibliography.feature +0 -45
- data/features/nameattr/AndOnCitationInCitation.feature +0 -36
- data/features/nameattr/AndOnNamesInBibliography.feature +0 -42
- data/features/nameattr/AndOnNamesInCitation.feature +0 -35
- data/features/nameattr/AndOnStyleInBibliography.feature +0 -43
- data/features/nameattr/AndOnStyleInCitation.feature +0 -43
- data/features/nameattr/DelimiterPrecedesEtAlOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/DelimiterPrecedesEtAlOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/DelimiterPrecedesEtAlOnCitationInBibliography.feature +0 -45
- data/features/nameattr/DelimiterPrecedesEtAlOnCitationInCitation.feature +0 -36
- data/features/nameattr/DelimiterPrecedesEtAlOnNamesInBibliography.feature +0 -42
- data/features/nameattr/DelimiterPrecedesEtAlOnNamesInCitation.feature +0 -35
- data/features/nameattr/DelimiterPrecedesEtAlOnStyleInBibliography.feature +0 -43
- data/features/nameattr/DelimiterPrecedesEtAlOnStyleInCitation.feature +0 -36
- data/features/nameattr/DelimiterPrecedesLastOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/DelimiterPrecedesLastOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/DelimiterPrecedesLastOnCitationInBibliography.feature +0 -45
- data/features/nameattr/DelimiterPrecedesLastOnCitationInCitation.feature +0 -36
- data/features/nameattr/DelimiterPrecedesLastOnNamesInBibliography.feature +0 -42
- data/features/nameattr/DelimiterPrecedesLastOnNamesInCitation.feature +0 -35
- data/features/nameattr/DelimiterPrecedesLastOnStyleInBibliography.feature +0 -43
- data/features/nameattr/DelimiterPrecedesLastOnStyleInCitation.feature +0 -36
- data/features/nameattr/EtAlMinOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/EtAlMinOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/EtAlMinOnCitationInBibliography.feature +0 -45
- data/features/nameattr/EtAlMinOnCitationInCitation.feature +0 -36
- data/features/nameattr/EtAlMinOnNamesInBibliography.feature +0 -42
- data/features/nameattr/EtAlMinOnNamesInCitation.feature +0 -35
- data/features/nameattr/EtAlMinOnStyleInBibliography.feature +0 -42
- data/features/nameattr/EtAlMinOnStyleInCitation.feature +0 -35
- data/features/nameattr/EtAlSubsequentMinOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/EtAlSubsequentMinOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/EtAlSubsequentMinOnCitationInBibliography.feature +0 -45
- data/features/nameattr/EtAlSubsequentMinOnCitationInCitation.feature +0 -37
- data/features/nameattr/EtAlSubsequentMinOnNamesInBibliography.feature +0 -42
- data/features/nameattr/EtAlSubsequentMinOnStyleInBibliography.feature +0 -42
- data/features/nameattr/EtAlSubsequentMinOnStyleInCitation.feature +0 -38
- data/features/nameattr/EtAlSubsequentUseFirstOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/EtAlSubsequentUseFirstOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/EtAlSubsequentUseFirstOnCitationInBibliography.feature +0 -45
- data/features/nameattr/EtAlSubsequentUseFirstOnCitationInCitation.feature +0 -44
- data/features/nameattr/EtAlSubsequentUseFirstOnStyleInBibliography.feature +0 -43
- data/features/nameattr/EtAlSubsequentUseFirstOnStyleInCitation.feature +0 -37
- data/features/nameattr/EtAlUseFirstOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/EtAlUseFirstOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/EtAlUseFirstOnCitationInBibliography.feature +0 -45
- data/features/nameattr/EtAlUseFirstOnCitationInCitation.feature +0 -43
- data/features/nameattr/EtAlUseFirstOnNamesInBibliography.feature +0 -42
- data/features/nameattr/EtAlUseFirstOnNamesInCitation.feature +0 -35
- data/features/nameattr/EtAlUseFirstOnStyleInBibliography.feature +0 -43
- data/features/nameattr/EtAlUseFirstOnStyleInCitation.feature +0 -35
- data/features/nameattr/InitializeWithOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/InitializeWithOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/InitializeWithOnCitationInBibliography.feature +0 -45
- data/features/nameattr/InitializeWithOnCitationInCitation.feature +0 -36
- data/features/nameattr/InitializeWithOnNamesInBibliography.feature +0 -42
- data/features/nameattr/InitializeWithOnNamesInCitation.feature +0 -35
- data/features/nameattr/InitializeWithOnStyleInBibliography.feature +0 -43
- data/features/nameattr/InitializeWithOnStyleInCitation.feature +0 -36
- data/features/nameattr/NameAsSortOrderOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/NameAsSortOrderOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/NameAsSortOrderOnCitationInBibliography.feature +0 -45
- data/features/nameattr/NameAsSortOrderOnCitationInCitation.feature +0 -36
- data/features/nameattr/NameAsSortOrderOnNamesInBibliography.feature +0 -42
- data/features/nameattr/NameAsSortOrderOnNamesInCitation.feature +0 -35
- data/features/nameattr/NameAsSortOrderOnStyleInBibliography.feature +0 -43
- data/features/nameattr/NameAsSortOrderOnStyleInCitation.feature +0 -35
- data/features/nameattr/NameDelimiterOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/NameDelimiterOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/NameDelimiterOnCitationInBibliography.feature +0 -45
- data/features/nameattr/NameDelimiterOnCitationInCitation.feature +0 -43
- data/features/nameattr/NameDelimiterOnNamesInBibliography.feature +0 -42
- data/features/nameattr/NameDelimiterOnNamesInCitation.feature +0 -42
- data/features/nameattr/NameDelimiterOnStyleInBibliography.feature +0 -43
- data/features/nameattr/NameDelimiterOnStyleInCitation.feature +0 -43
- data/features/nameattr/NameFormOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/NameFormOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/NameFormOnCitationInBibliography.feature +0 -45
- data/features/nameattr/NameFormOnCitationInCitation.feature +0 -43
- data/features/nameattr/NameFormOnNamesInBibliography.feature +0 -42
- data/features/nameattr/NameFormOnNamesInCitation.feature +0 -35
- data/features/nameattr/NameFormOnStyleInBibliography.feature +0 -43
- data/features/nameattr/NameFormOnStyleInCitation.feature +0 -36
- data/features/nameattr/NamesDelimiterOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/NamesDelimiterOnBibliographyInCitation.feature +0 -43
- data/features/nameattr/NamesDelimiterOnCitationInBibliography.feature +0 -45
- data/features/nameattr/NamesDelimiterOnCitationInCitation.feature +0 -36
- data/features/nameattr/NamesDelimiterOnNamesInBibliography.feature +0 -42
- data/features/nameattr/NamesDelimiterOnNamesInCitation.feature +0 -35
- data/features/nameattr/NamesDelimiterOnStyleInBibliography.feature +0 -42
- data/features/nameattr/NamesDelimiterOnStyleInCitation.feature +0 -36
- data/features/nameattr/SortSeparatorOnBibliographyInBibliography.feature +0 -43
- data/features/nameattr/SortSeparatorOnBibliographyInCitation.feature +0 -44
- data/features/nameattr/SortSeparatorOnCitationInBibliography.feature +0 -45
- data/features/nameattr/SortSeparatorOnCitationInCitation.feature +0 -36
- data/features/nameattr/SortSeparatorOnNamesInBibliography.feature +0 -42
- data/features/nameattr/SortSeparatorOnNamesInCitation.feature +0 -35
- data/features/nameattr/SortSeparatorOnStyleInBibliography.feature +0 -43
- data/features/nameattr/SortSeparatorOnStyleInCitation.feature +0 -36
- data/features/nameorder/Long.feature +0 -35
- data/features/nameorder/LongNameAsSortDemoteDisplayAndSort.feature +0 -36
- data/features/nameorder/LongNameAsSortDemoteNever.feature +0 -36
- data/features/nameorder/Short.feature +0 -35
- data/features/nameorder/ShortDemoteDisplayAndSort.feature +0 -36
- data/features/nameorder/ShortNameAsSortDemoteNever.feature +0 -36
- data/features/namespaces/NonNada3.feature +0 -33
- data/features/number/EditionSort.feature +0 -47
- data/features/number/FailingDelimiters.feature +0 -44
- data/features/number/IsNumericWithAlpha.feature +0 -40
- data/features/number/MixedPageRange.feature +0 -34
- data/features/number/MixedText.feature +0 -33
- data/features/number/NewOrdinals.feature +0 -64
- data/features/number/NewOrdinalsEdition.feature +0 -1044
- data/features/number/NewOrdinalsWithGenderChange.feature +0 -45
- data/features/number/PageFirst.feature +0 -36
- data/features/number/PageRange.feature +0 -33
- data/features/number/PlainHyphenOrEnDashAlwaysPlural.feature +0 -42
- data/features/number/SeparateOrdinalNamespaces.feature +0 -55
- data/features/number/SimpleNumberArabic.feature +0 -33
- data/features/number/SimpleNumberOrdinalLong.feature +0 -35
- data/features/number/SimpleNumberOrdinalShort.feature +0 -33
- data/features/number/SimpleNumberRoman.feature +0 -33
- data/features/number/StrangeError.feature +0 -34
- data/features/page/Chicago.feature +0 -55
- data/features/page/Expand.feature +0 -42
- data/features/page/Minimal.feature +0 -55
- data/features/page/NoOption.feature +0 -34
- data/features/page/NumberPageFirst.feature +0 -33
- data/features/page/PluralDetectWithEndash.feature +0 -33
- data/features/parallel/Bibliography.feature +0 -87
- data/features/parallel/HackedChicago.feature +0 -715
- data/features/parallel/JournalArticleReverse.feature +0 -46
- data/features/parallel/JournalArticleSimple.feature +0 -46
- data/features/parallel/TrailingIbid.feature +0 -69
- data/features/plural/LabelForced.feature +0 -37
- data/features/plural/NameLabelAlways.feature +0 -36
- data/features/plural/NameLabelContextualPlural.feature +0 -36
- data/features/plural/NameLabelContextualSingular.feature +0 -36
- data/features/plural/NameLabelDefaultPlural.feature +0 -36
- data/features/plural/NameLabelDefaultSingular.feature +0 -36
- data/features/plural/NameLabelNever.feature +0 -36
- data/features/position/FalseInBibliography.feature +0 -47
- data/features/position/FirstTrueOnlyOnce.feature +0 -55
- data/features/position/IbidInText.feature +0 -51
- data/features/position/IbidSeparateCiteSameNote.feature +0 -80
- data/features/position/IbidWithLocator.feature +0 -52
- data/features/position/IbidWithMultipleSoloCitesInBackref.feature +0 -52
- data/features/position/IbidWithPrefixFullStop.feature +0 -44
- data/features/position/IbidWithSuffix.feature +0 -54
- data/features/position/IfIbidIsTrueThenSubsequentIsTrue.feature +0 -61
- data/features/position/IfIbidWithLocatorIsTrueThenIbidIsTrue.feature +0 -58
- data/features/position/NearNoteFalse.feature +0 -41
- data/features/position/NearNoteSameNote.feature +0 -43
- data/features/position/NearNoteTrue.feature +0 -41
- data/features/position/NearNoteUnsupported.feature +0 -40
- data/features/position/NearNoteWithPlugin.feature +0 -454
- data/features/position/ResetNoteNumbers.feature +0 -54
- data/features/position/TrueInCitation.feature +0 -45
- data/features/punctuation/DateStripPeriods.feature +0 -36
- data/features/punctuation/DefaultYearSuffixDelimiter.feature +0 -183
- data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute1.feature +0 -53
- data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute2.feature +0 -52
- data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute3.feature +0 -60
- data/features/punctuation/DoNotSuppressColonAfterPeriod.feature +0 -34
- data/features/punctuation/FrenchOrthography.feature +0 -33
- data/features/punctuation/FullMontyField.feature +0 -230
- data/features/punctuation/FullMontyPlain.feature +0 -230
- data/features/punctuation/FullMontyQuotesIn.feature +0 -233
- data/features/punctuation/FullMontyQuotesOut.feature +0 -233
- data/features/punctuation/NoSuppressOfPeriodBeforeSemicolon.feature +0 -36
- data/features/punctuation/SemicolonDelimiter.feature +0 -62
- data/features/punctuation/SuppressPrefixPeriodForDelimiterSemicolon.feature +0 -715
- data/features/quotes/Punctuation.feature +0 -43
- data/features/quotes/PunctuationNasty.feature +0 -977
- data/features/quotes/PunctuationWithInnerQuote.feature +0 -43
- data/features/simplespace/case1.feature +0 -202
- data/features/sort/AguStyle.feature +0 -94
- data/features/sort/AguStyleReverseGroups.feature +0 -94
- data/features/sort/AuthorDateWithYearSuffix.feature +0 -202
- data/features/sort/BibliographyCitationNumberDescending.feature +0 -51
- data/features/sort/BibliographyCitationNumberDescendingViaMacro.feature +0 -54
- data/features/sort/BibliographyNosortOption.feature +0 -44
- data/features/sort/CaseInsensitiveBibliography.feature +0 -55
- data/features/sort/CaseInsensitiveCitation.feature +0 -36
- data/features/sort/ChangeInNameSort.feature +0 -54
- data/features/sort/ChicagoYearSuffix1.feature +0 -391
- data/features/sort/ChicagoYearSuffix2.feature +0 -391
- data/features/sort/Citation.feature +0 -42
- data/features/sort/CitationEdit.feature +0 -49
- data/features/sort/CitationSecondaryKey.feature +0 -46
- data/features/sort/CitationUnsorted.feature +0 -42
- data/features/sort/CiteGroupDelimiter.feature +0 -45
- data/features/sort/ConditionalMacroDates.feature +0 -64
- data/features/sort/DateMacroSortWithSecondFieldAlign.feature +0 -56
- data/features/sort/DateVariable.feature +0 -36
- data/features/sort/DateVariableMixedElementsAscendingA.feature +0 -36
- data/features/sort/DateVariableMixedElementsAscendingB.feature +0 -36
- data/features/sort/DateVariableMixedElementsDescendingA.feature +0 -36
- data/features/sort/DateVariableMixedElementsDescendingB.feature +0 -36
- data/features/sort/DateVariableRange.feature +0 -36
- data/features/sort/DateVariableRangeMixed.feature +0 -36
- data/features/sort/DropNameLabelInSort.feature +0 -116
- data/features/sort/EtAlUseLast.feature +0 -54
- data/features/sort/FamilyOnly.feature +0 -45
- data/features/sort/GroupedByAuthorstring.feature +0 -50
- data/features/sort/LatinUnicode.feature +0 -42
- data/features/sort/LeadingApostropheOnNameParticle.feature +0 -55
- data/features/sort/LocalizedDateLimitedParts.feature +0 -40
- data/features/sort/NameImplicitSortOrderAndForm.feature +0 -51
- data/features/sort/NameParticleInNameSortFalse.feature +0 -48
- data/features/sort/NameParticleInNameSortTrue.feature +0 -48
- data/features/sort/NameVariable.feature +0 -47
- data/features/sort/NamesUseLast.feature +0 -64
- data/features/sort/NumberOfAuthorsAsKey.feature +0 -68
- data/features/sort/SeparateAuthorsAndOthers.feature +0 -127
- data/features/sort/StatusFieldAscending.feature +0 -46
- data/features/sort/StatusFieldDescending.feature +0 -46
- data/features/sort/StripMarkup.feature +0 -39
- data/features/sort/SubstituteTitle.feature +0 -398
- data/features/sort/VariousNameMacros1.feature +0 -287
- data/features/sort/VariousNameMacros2.feature +0 -287
- data/features/sort/VariousNameMacros3.feature +0 -288
- data/features/sort/WithAndInOneEntry.feature +0 -228
- data/features/sortseparator/SortSeparatorEmpty.feature +0 -44
- data/features/step_definitions/processor.rb +0 -59
- data/features/substitute/RepeatedNamesOk.feature +0 -52
- data/features/substitute/SuppressOrdinaryVariable.feature +0 -79
- data/features/support/env.rb +0 -49
- data/features/testers/FirstAutoGeneratedZoteroPluginTest.feature +0 -715
- data/features/testers/SecondAutoGeneratedZoteroPluginTest.feature +0 -717
- data/features/textcase/CapitalizeAll.feature +0 -33
- data/features/textcase/CapitalizeFirst.feature +0 -33
- data/features/textcase/CapitalizeFirstWithDecor.feature +0 -33
- data/features/textcase/CapitalsUntouched.feature +0 -37
- data/features/textcase/Lowercase.feature +0 -33
- data/features/textcase/SentenceCapitalization.feature +0 -33
- data/features/textcase/SkipNameParticlesInTitleCase.feature +0 -33
- data/features/textcase/TitleCapitalization.feature +0 -33
- data/features/textcase/TitleCaseNonEnglish.feature +0 -33
- data/features/textcase/TitleCaseNonEnglish2.feature +0 -34
- data/features/textcase/TitleCaseWithHyphens.feature +0 -33
- data/features/textcase/TitleCaseWithInitials.feature +0 -33
- data/features/textcase/Uppercase.feature +0 -59
- data/features/textcase/UppercaseNumber.feature +0 -33
- data/features/unicode/NonBreakingSpace.feature +0 -34
- data/features/variables/ShortForm.feature +0 -54
- data/features/variables/TitleShortOnAbbrevWithTitle.feature +0 -37
- data/features/variables/TitleShortOnAbbrevWithTitleCondition.feature +0 -57
- data/features/variables/TitleShortOnAbbrevWithTitleGroup.feature +0 -44
- data/features/variables/TitleShortOnShortTitleNoTitle.feature +0 -33
- data/features/variables/TitleShortOnShortTitleNoTitleCondition.feature +0 -53
- data/features/variables/TitleShortOnShortTitleNoTitleGroup.feature +0 -40
- data/features/virtual/PageFirst.feature +0 -37
- data/spec/citeproc/abbreviate_spec.rb +0 -37
- data/spec/citeproc/assets_spec.rb +0 -72
- data/spec/citeproc/attributes_spec.rb +0 -97
- data/spec/citeproc/bibliography_spec.rb +0 -72
- data/spec/citeproc/citation_data_spec.rb +0 -94
- data/spec/citeproc/date_spec.rb +0 -423
- data/spec/citeproc/engine_spec.rb +0 -19
- data/spec/citeproc/extensions_spec.rb +0 -89
- data/spec/citeproc/item_spec.rb +0 -91
- data/spec/citeproc/names_spec.rb +0 -646
- data/spec/citeproc/processor_spec.rb +0 -127
- data/spec/citeproc/selector_spec.rb +0 -90
- data/spec/citeproc/utilities_spec.rb +0 -12
- data/spec/citeproc/variable_spec.rb +0 -196
- data/spec/fixtures/locales/locales-en-US.xml +0 -304
- data/spec/spec_helper.rb +0 -42
- data/tasks/testsuite.rb +0 -206
@@ -1,19 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module CiteProc
|
4
|
-
describe Engine do
|
5
|
-
|
6
|
-
it 'cannot be instantiated' do
|
7
|
-
expect { Engine.new }.to raise_error(NoMethodError)
|
8
|
-
end
|
9
|
-
|
10
|
-
describe 'subclasses' do
|
11
|
-
let(:subject) { Class.new(Engine).new }
|
12
|
-
|
13
|
-
it 'can be instantiated' do
|
14
|
-
expect(subject).not_to be nil
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
19
|
-
end
|
@@ -1,89 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Hash do
|
4
|
-
let(:hash) { { :a => { :b => { :c => :d } } } }
|
5
|
-
|
6
|
-
|
7
|
-
describe '#deep_copy' do
|
8
|
-
it { expect(hash).to respond_to(:deep_copy) }
|
9
|
-
|
10
|
-
it 'returns a copy equal to the hash' do
|
11
|
-
expect(hash.deep_copy).to eq(hash)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'returns a copy that is not identical to the hash' do
|
15
|
-
expect(hash.deep_copy).not_to equal(hash)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'returns a deep copy' do
|
19
|
-
expect(hash.deep_copy[:a]).to eq(hash[:a])
|
20
|
-
expect(hash.deep_copy[:a]).not_to equal(hash[:a])
|
21
|
-
expect(hash.deep_copy[:a][:b]).to eq(hash[:a][:b])
|
22
|
-
expect(hash.deep_copy[:a][:b]).not_to equal(hash[:a][:b])
|
23
|
-
expect(hash.deep_copy[:a][:b][:c]).to eq(hash[:a][:b][:c])
|
24
|
-
end
|
25
|
-
|
26
|
-
context 'when given nested arrays' do
|
27
|
-
let(:hash) {{:a => [[1,2]]}}
|
28
|
-
it 'it returns a deep copy' do
|
29
|
-
expect(hash.deep_copy[:a]).to eq(hash[:a])
|
30
|
-
expect(hash.deep_copy[:a]).not_to equal(hash[:a])
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
describe '#deep_fetch' do
|
37
|
-
# it 'behaves like normal for two arguments' do
|
38
|
-
# hash.fetch(:b, 42).should == 42
|
39
|
-
# end
|
40
|
-
#
|
41
|
-
# it 'behaves like normal for one argument and a block' do
|
42
|
-
# hash.fetch(:b) {42}.should == 42
|
43
|
-
# end
|
44
|
-
|
45
|
-
it 'returns the value of all the arguments applied as keys' do
|
46
|
-
expect(hash.deep_fetch(:a, :b, :c)).to eq(:d)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'returns nil if any of the values did not exist' do
|
50
|
-
expect(hash.deep_fetch(:x, :b, :c)).to be nil
|
51
|
-
expect(hash.deep_fetch(:a, :x, :c)).to be nil
|
52
|
-
expect(hash.deep_fetch(:a, :b, :x)).to be nil
|
53
|
-
end
|
54
|
-
|
55
|
-
end
|
56
|
-
|
57
|
-
end
|
58
|
-
|
59
|
-
describe Array do
|
60
|
-
|
61
|
-
describe '#compact_join' do
|
62
|
-
|
63
|
-
it 'is equivalent to #join when there are no blank elements' do
|
64
|
-
expect([1,2,3].compact_join(' ')).to eq([1,2,3].join(' '))
|
65
|
-
end
|
66
|
-
|
67
|
-
it 'is equivalent to #compact and #join when there are no empty elements' do
|
68
|
-
expect([1,2,3,nil,nil,4].compact_join(' ')).to eq([1,2,3,nil,nil,4].compact.join(' '))
|
69
|
-
end
|
70
|
-
|
71
|
-
it 'returns an empty string if the array is empty' do
|
72
|
-
expect([].compact_join(' ')).to eq('')
|
73
|
-
end
|
74
|
-
|
75
|
-
it 'returns an empty string if there are only nil elements' do
|
76
|
-
expect([nil,nil,nil].compact_join(' ')).to eq('')
|
77
|
-
end
|
78
|
-
|
79
|
-
it 'returns an empty string if there are only empty elements' do
|
80
|
-
expect(['','',''].compact_join(' ')).to eq('')
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'returns an empty string if there are only blank elements' do
|
84
|
-
expect(['','',nil,'',nil].compact_join(' ')).to eq('')
|
85
|
-
end
|
86
|
-
|
87
|
-
end
|
88
|
-
|
89
|
-
end
|
data/spec/citeproc/item_spec.rb
DELETED
@@ -1,91 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
module CiteProc
|
4
|
-
describe Item do
|
5
|
-
|
6
|
-
|
7
|
-
describe '.new' do
|
8
|
-
it { is_expected.not_to be nil }
|
9
|
-
|
10
|
-
it 'creates number variables for number fields' do
|
11
|
-
expect(Item.new(:edition => 23).edition).to be_a(Number)
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'creates text variable for text fields' do
|
15
|
-
expect(Item.new(:ISBN => 23).isbn).to be_a(Text)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'creates date variables for date fields' do
|
19
|
-
expect(Item.new(:accessed => Time.now).accessed).to be_a(CiteProc::Date)
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'creates names variables for name fields' do
|
23
|
-
expect(Item.new(:editor => { :given => 'Jane' }).editor).to be_a(Names)
|
24
|
-
expect(Item.new(:editor => 'Plato and Socrates').editor.names.size).to eq(2)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'creates text variables for unknown fields' do
|
28
|
-
v = Item.new(:unknown => 42)[:unknown]
|
29
|
-
expect(v).to be_a(Variable)
|
30
|
-
expect(v).to eq('42')
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe '#empty' do
|
35
|
-
it { is_expected.to be_empty }
|
36
|
-
|
37
|
-
it 'returns false when there is at least one variable in the item' do
|
38
|
-
expect(Item.new(:title => 'foo')).not_to be_empty
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
describe '#each' do
|
43
|
-
it 'yields each variable to the given block' do
|
44
|
-
expect(Item.new(:title => 'foo', :edition => 2).each.map {|kv| kv.join('-') }.sort).to eq(%w{edition-2 title-foo})
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
describe '#each_value' do
|
49
|
-
it "yields each variable's value to the given block" do
|
50
|
-
expect(Item.new(:title => 'foo', :edition => 2).each_value.map(&:to_s).sort).to eq(%w{2 foo})
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
describe '#to_citeproc' do
|
55
|
-
it 'returns an empty hash by default' do
|
56
|
-
expect(Item.new.to_citeproc).to eq({})
|
57
|
-
end
|
58
|
-
|
59
|
-
it 'returns a hash with stringified keys' do
|
60
|
-
expect(Item.new(:issue => 42).to_citeproc).to have_key('issue')
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'returns a hash with stringified values' do
|
64
|
-
expect(Item.new(:issue => 42).to_citeproc.values[0]).to eq('42')
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
describe '#dup' do
|
69
|
-
it 'returns a copy' do
|
70
|
-
item = Item.new
|
71
|
-
expect(item.dup).not_to equal(item)
|
72
|
-
end
|
73
|
-
|
74
|
-
it 'copies all variables' do
|
75
|
-
expect(Item.new(:issued => 1976).dup[:issued].year).to eq(1976)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
describe '#attribute?' do
|
80
|
-
it 'should not trigger an observable read' do
|
81
|
-
obs = Object.new
|
82
|
-
def obs.update
|
83
|
-
end
|
84
|
-
expect(obs).not_to receive(:update)
|
85
|
-
item = Item.new(:issued => 1976)
|
86
|
-
item.add_observer(obs)
|
87
|
-
item.attribute?(:issued)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
data/spec/citeproc/names_spec.rb
DELETED
@@ -1,646 +0,0 @@
|
|
1
|
-
# -*- coding: utf-8 -*-
|
2
|
-
|
3
|
-
require 'spec_helper'
|
4
|
-
|
5
|
-
module CiteProc
|
6
|
-
|
7
|
-
describe 'CiteProc Names' do
|
8
|
-
|
9
|
-
let(:poe) { Name.new(:family => 'Poe', :given => 'Edgar Allen') }
|
10
|
-
let(:joe) { Name.new(:given => 'Joe') }
|
11
|
-
let(:plato) { Name.new(:given => 'Plato') }
|
12
|
-
let(:aristotle) { Name.new(:given => 'Ἀριστοτέλης') }
|
13
|
-
let(:dostoyevksy) { Name.new(:given => 'Фёдор Михайлович', :family => 'Достоевский') }
|
14
|
-
|
15
|
-
let(:utf) { Name.new(
|
16
|
-
:given => 'Gérard',
|
17
|
-
:'dropping-particle' => 'de',
|
18
|
-
:'non-dropping-particle' => 'la',
|
19
|
-
:family => 'Martinière',
|
20
|
-
:suffix => 'III')
|
21
|
-
}
|
22
|
-
|
23
|
-
let(:markup) { Name.new(
|
24
|
-
:given => '<b>Gérard</b>',
|
25
|
-
:'dropping-particle' => 'd<i>e</i>',
|
26
|
-
:'non-dropping-particle' => 'la',
|
27
|
-
:family => 'Mar<strong>tinière</strong>',
|
28
|
-
:suffix => 'III')
|
29
|
-
}
|
30
|
-
|
31
|
-
|
32
|
-
let(:japanese) { Name.new(
|
33
|
-
"family" => "穂積",
|
34
|
-
"given" => "陳重")
|
35
|
-
}
|
36
|
-
|
37
|
-
let(:saunders) { Name.new("family" => "Saunders", "given" => "John Bertrand de Cusance Morant") }
|
38
|
-
|
39
|
-
let(:humboldt) { Name.new(
|
40
|
-
"family" => "Humboldt",
|
41
|
-
"given" => "Alexander",
|
42
|
-
"dropping-particle" => "von")
|
43
|
-
}
|
44
|
-
|
45
|
-
let(:van_gogh) { Name.new(
|
46
|
-
"family" => "Gogh",
|
47
|
-
"given" => "Vincent",
|
48
|
-
"non-dropping-particle" => "van")
|
49
|
-
}
|
50
|
-
|
51
|
-
let(:jr) { Name.new(
|
52
|
-
"family" => "Stephens",
|
53
|
-
"given" => "James",
|
54
|
-
"suffix" => "Jr.")
|
55
|
-
}
|
56
|
-
|
57
|
-
let(:frank) { Name.new(
|
58
|
-
"family" => "Bennett",
|
59
|
-
"given" => "Frank G.",
|
60
|
-
"suffix" => "Jr.",
|
61
|
-
"comma-suffix" => "true")
|
62
|
-
}
|
63
|
-
|
64
|
-
let(:ramses) { Name.new(
|
65
|
-
:family => 'Ramses',
|
66
|
-
:given => 'Horatio',
|
67
|
-
:suffix => 'III')
|
68
|
-
}
|
69
|
-
|
70
|
-
describe Name do
|
71
|
-
|
72
|
-
|
73
|
-
it { is_expected.not_to be_nil }
|
74
|
-
|
75
|
-
describe 'formatting options' do
|
76
|
-
|
77
|
-
it 'does not always demote particle by default' do
|
78
|
-
expect(Name.new.always_demote_particle?).to be false
|
79
|
-
expect(Name.new.always_demote_non_dropping_particle?).to be false
|
80
|
-
end
|
81
|
-
|
82
|
-
it 'does not demote particle by default' do
|
83
|
-
expect(Name.new.demote_particle?).to be false
|
84
|
-
expect(Name.new.demote_non_dropping_particle?).to be false
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'does not demote particle in sort order by default' do
|
88
|
-
expect(Name.new.sort_order!.demote_particle?).to be false
|
89
|
-
expect(Name.new.sort_order!.demote_non_dropping_particle?).to be false
|
90
|
-
end
|
91
|
-
|
92
|
-
it 'always demotes particle if option is set' do
|
93
|
-
expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_particle?).to be true
|
94
|
-
expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').always_demote_non_dropping_particle?).to be true
|
95
|
-
end
|
96
|
-
|
97
|
-
it 'demotes particle in sort order if option is set to sort-only' do
|
98
|
-
expect(Name.new({}, :'demote-non-dropping-particle' => 'display-and-sort').sort_order!.demote_particle?).to be true
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'never demotes particle by default' do
|
102
|
-
expect(Name.new.never_demote_particle?).to be true
|
103
|
-
expect(Name.new.never_demote_non_dropping_particle?).to be true
|
104
|
-
end
|
105
|
-
|
106
|
-
it 'is not in sort order by default' do
|
107
|
-
expect(Name.new.sort_order?).to be false
|
108
|
-
end
|
109
|
-
|
110
|
-
it 'uses the long form by default' do
|
111
|
-
expect(Name.new).to be_long_form
|
112
|
-
end
|
113
|
-
|
114
|
-
it 'does not use short form by default' do
|
115
|
-
expect(Name.new).not_to be_short_form
|
116
|
-
end
|
117
|
-
|
118
|
-
end
|
119
|
-
|
120
|
-
describe '#initials' do
|
121
|
-
let(:name) { Name.new(nil, :'initialize-with' => '. ') }
|
122
|
-
|
123
|
-
it 'returns the given name initials' do
|
124
|
-
name.given = 'Edgar A'
|
125
|
-
expect(name.initials).to eq('E. A.')
|
126
|
-
|
127
|
-
name.options[:initialize] = 'false'
|
128
|
-
expect(name.initials).to eq('Edgar A.')
|
129
|
-
end
|
130
|
-
|
131
|
-
describe 'private helpers' do
|
132
|
-
it '#initials_of initializes the given string' do
|
133
|
-
expect(name.send(:initials_of, 'James T.')).to eq('J. T.')
|
134
|
-
expect(name.send(:initials_of, 'JT')).to eq('J. T.')
|
135
|
-
expect(name.send(:initials_of, 'James T')).to eq('J. T.')
|
136
|
-
expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.-L.')
|
137
|
-
expect(name.send(:initials_of, 'Vérité Äpfel')).to eq('V. Ä.')
|
138
|
-
|
139
|
-
name.initialize_without_hyphen!
|
140
|
-
expect(name.send(:initials_of, 'Jean-Luc')).to eq('J. L.')
|
141
|
-
|
142
|
-
name.options[:'initialize-with'] = '.'
|
143
|
-
expect(name.send(:initials_of, 'James T.')).to eq('J.T.')
|
144
|
-
expect(name.send(:initials_of, 'James T')).to eq('J.T.')
|
145
|
-
expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.L.')
|
146
|
-
|
147
|
-
name.options[:'initialize-with-hyphen'] = true
|
148
|
-
expect(name.send(:initials_of, 'Jean-Luc')).to eq('J.-L.')
|
149
|
-
end
|
150
|
-
|
151
|
-
it '#initialize_existing_only initializes only current initials' do
|
152
|
-
expect(name.send(:existing_initials_of, 'James T. Kirk')).to eq('James T. Kirk')
|
153
|
-
expect(name.send(:existing_initials_of, 'James T.Kirk')).to eq('James T. Kirk')
|
154
|
-
expect(name.send(:existing_initials_of, 'James T')).to eq('James T.')
|
155
|
-
expect(name.send(:existing_initials_of, 'Jean-Luc')).to eq('Jean-Luc')
|
156
|
-
expect(name.send(:existing_initials_of, 'J.-L.M.')).to eq('J.-L. M.')
|
157
|
-
expect(name.send(:existing_initials_of, 'J-L')).to eq('J.-L.')
|
158
|
-
expect(name.send(:existing_initials_of, 'J-LM')).to eq('J.-L. M.')
|
159
|
-
expect(name.send(:existing_initials_of, 'JT')).to eq('J. T.')
|
160
|
-
end
|
161
|
-
end
|
162
|
-
end
|
163
|
-
|
164
|
-
describe 'constructing' do
|
165
|
-
|
166
|
-
describe '.new' do
|
167
|
-
|
168
|
-
it 'accepts a symbolized hash' do
|
169
|
-
expect(Name.new(:family => 'Doe').format).to eq('Doe')
|
170
|
-
end
|
171
|
-
|
172
|
-
it 'accepts a stringified hash' do
|
173
|
-
expect(Name.new('family' => 'Doe').format).to eq('Doe')
|
174
|
-
end
|
175
|
-
|
176
|
-
end
|
177
|
-
|
178
|
-
end
|
179
|
-
|
180
|
-
describe '#dup' do
|
181
|
-
|
182
|
-
it 'returns a new name copied by value' do
|
183
|
-
expect(poe.dup.upcase!.format).not_to eq(poe.format)
|
184
|
-
end
|
185
|
-
|
186
|
-
end
|
187
|
-
|
188
|
-
describe 'script awareness' do
|
189
|
-
|
190
|
-
it 'english names are romanesque' do
|
191
|
-
expect(frank).to be_romanesque
|
192
|
-
end
|
193
|
-
|
194
|
-
it 'ancient greek names are romanesque' do
|
195
|
-
expect(aristotle).to be_romanesque
|
196
|
-
end
|
197
|
-
|
198
|
-
it 'russian names are romanesque' do
|
199
|
-
expect(dostoyevksy).to be_romanesque
|
200
|
-
end
|
201
|
-
|
202
|
-
it 'japanese names are not romanesque' do
|
203
|
-
expect(japanese).not_to be_romanesque
|
204
|
-
end
|
205
|
-
|
206
|
-
it 'german names are romanesque' do
|
207
|
-
expect(Name.new(:given => 'Friedrich', :family => 'Hölderlin')).to be_romanesque
|
208
|
-
end
|
209
|
-
|
210
|
-
it 'french names are romanesque' do
|
211
|
-
expect(utf).to be_romanesque
|
212
|
-
end
|
213
|
-
|
214
|
-
it 'markup does not interfere with romanesque test' do
|
215
|
-
expect(markup).to be_romanesque
|
216
|
-
end
|
217
|
-
|
218
|
-
end
|
219
|
-
|
220
|
-
describe 'literals' do
|
221
|
-
|
222
|
-
it 'is a literal if the literal attribute is set' do
|
223
|
-
expect(Name.new(:literal => 'GNU/Linux')).to be_literal
|
224
|
-
end
|
225
|
-
|
226
|
-
it 'is not literal by default' do
|
227
|
-
expect(Name.new).not_to be_literal
|
228
|
-
end
|
229
|
-
|
230
|
-
it 'is literal even if other name parts are set' do
|
231
|
-
expect(Name.new(:family => 'Tux', :literal => 'GNU/Linux')).to be_literal
|
232
|
-
end
|
233
|
-
|
234
|
-
end
|
235
|
-
|
236
|
-
describe 'in-place manipulation (bang! methods)' do
|
237
|
-
|
238
|
-
it 'delegates to string for family name' do
|
239
|
-
expect(plato.swapcase!.format).to eq('pLATO')
|
240
|
-
end
|
241
|
-
|
242
|
-
it 'delegates to string for given name' do
|
243
|
-
expect(humboldt.gsub!(/^Alex\w*/, 'Wilhelm').format).to eq('Wilhelm von Humboldt')
|
244
|
-
end
|
245
|
-
|
246
|
-
it 'delegates to string for dropping particle' do
|
247
|
-
expect(humboldt.upcase!.dropping_particle).to eq('VON')
|
248
|
-
end
|
249
|
-
|
250
|
-
it 'delegates to string for non dropping particle' do
|
251
|
-
expect(van_gogh.upcase!.non_dropping_particle).to eq('VAN')
|
252
|
-
end
|
253
|
-
|
254
|
-
it 'delegates to string for suffix' do
|
255
|
-
expect(frank.sub!(/jr./i, 'Sr.').format).to eq('Frank G. Bennett, Sr.')
|
256
|
-
end
|
257
|
-
|
258
|
-
it 'returns the name object' do
|
259
|
-
expect(poe.upcase!).to be_a(Name)
|
260
|
-
end
|
261
|
-
|
262
|
-
end
|
263
|
-
|
264
|
-
|
265
|
-
describe '#format' do
|
266
|
-
|
267
|
-
it 'returns an empty string by default' do
|
268
|
-
expect(Name.new.format).to be_empty
|
269
|
-
end
|
270
|
-
|
271
|
-
it 'returns the last name if only last name is set' do
|
272
|
-
expect(Name.new(:family => 'Doe').format).to eq('Doe')
|
273
|
-
end
|
274
|
-
|
275
|
-
it 'returns the first name if only the first name is set' do
|
276
|
-
expect(Name.new(:given => 'John').format).to eq('John')
|
277
|
-
end
|
278
|
-
|
279
|
-
it 'prints japanese names using static ordering' do
|
280
|
-
expect(japanese.format).to eq('穂積 陳重')
|
281
|
-
end
|
282
|
-
|
283
|
-
it 'returns the literal if the name is a literal' do
|
284
|
-
Name.new(:literal => 'GNU/Linux').format == 'GNU/Linux'
|
285
|
-
end
|
286
|
-
|
287
|
-
it 'returns the name in display order by default' do
|
288
|
-
expect(Name.new(:family => 'Doe', :given => 'John').format).to eq('John Doe')
|
289
|
-
end
|
290
|
-
|
291
|
-
it 'returns the name in sort order if the sort order option is active' do
|
292
|
-
expect(Name.new(:family => 'Doe', :given => 'John').sort_order!.format).to eq('Doe, John')
|
293
|
-
end
|
294
|
-
|
295
|
-
it 'returns the full given name' do
|
296
|
-
expect(saunders.format).to eq('John Bertrand de Cusance Morant Saunders')
|
297
|
-
end
|
298
|
-
|
299
|
-
it 'includes dropping particles' do
|
300
|
-
expect(humboldt.format).to eq('Alexander von Humboldt')
|
301
|
-
end
|
302
|
-
|
303
|
-
it 'includes non dropping particles' do
|
304
|
-
expect(van_gogh.format).to eq('Vincent van Gogh')
|
305
|
-
end
|
306
|
-
|
307
|
-
it 'includes suffices' do
|
308
|
-
expect(jr.format).to eq('James Stephens Jr.')
|
309
|
-
end
|
310
|
-
|
311
|
-
it 'uses the comma suffix option' do
|
312
|
-
expect(frank.format).to eq('Frank G. Bennett, Jr.')
|
313
|
-
end
|
314
|
-
|
315
|
-
it 'prints unicode characters' do
|
316
|
-
expect(utf.format).to eq("Gérard de la Martinière III")
|
317
|
-
end
|
318
|
-
|
319
|
-
it 'prints russian names normally' do
|
320
|
-
expect(dostoyevksy.format).to eq('Фёдор Михайлович Достоевский')
|
321
|
-
end
|
322
|
-
|
323
|
-
describe 'when static ordering is active' do
|
324
|
-
|
325
|
-
it 'always prints the family name first' do
|
326
|
-
expect(poe.static_order!.format).to eq('Poe Edgar Allen')
|
327
|
-
end
|
328
|
-
|
329
|
-
end
|
330
|
-
|
331
|
-
describe 'when the sort order option is active' do
|
332
|
-
|
333
|
-
it 'returns an empty string by default' do
|
334
|
-
expect(Name.new.sort_order!.format).to be_empty
|
335
|
-
end
|
336
|
-
|
337
|
-
it 'returns the last name if only last name is set' do
|
338
|
-
expect(Name.new({:family => 'Doe'}, { :'name-as-sort-order' => true }).format).to eq('Doe')
|
339
|
-
end
|
340
|
-
|
341
|
-
it 'returns the first name if only the first name is set' do
|
342
|
-
expect(Name.new(:given => 'John').sort_order!.format).to eq('John')
|
343
|
-
end
|
344
|
-
|
345
|
-
it 'prints japanese names using static ordering' do
|
346
|
-
expect(japanese.sort_order!.format).to eq('穂積 陳重')
|
347
|
-
end
|
348
|
-
|
349
|
-
it 'returns the literal if the name is a literal' do
|
350
|
-
Name.new(:literal => 'GNU/Linux').sort_order!.format == 'GNU/Linux'
|
351
|
-
end
|
352
|
-
|
353
|
-
it 'uses comma for suffix if comma suffix is set' do
|
354
|
-
expect(frank.sort_order!.format).to eq('Bennett, Frank G., Jr.')
|
355
|
-
end
|
356
|
-
|
357
|
-
it 'also uses comma for suffix if comma suffix is *not* set' do
|
358
|
-
expect(jr.sort_order!.format).to eq('Stephens, James, Jr.')
|
359
|
-
end
|
360
|
-
|
361
|
-
it 'for normal names it prints them as "family, given"' do
|
362
|
-
expect(poe.sort_order!.format).to eq('Poe, Edgar Allen')
|
363
|
-
end
|
364
|
-
|
365
|
-
it 'particles come after given name by default' do
|
366
|
-
expect(van_gogh.sort_order!.format).to eq('van Gogh, Vincent')
|
367
|
-
end
|
368
|
-
|
369
|
-
it 'particles come after given name if demote option is active' do
|
370
|
-
expect(van_gogh.sort_order!.demote_particle!.format).to eq('Gogh, Vincent van')
|
371
|
-
end
|
372
|
-
|
373
|
-
it 'dropping particles come after given name' do
|
374
|
-
expect(humboldt.sort_order!.format).to eq('Humboldt, Alexander von')
|
375
|
-
end
|
376
|
-
|
377
|
-
it 'by default if all parts are set they are returned as "particle family, first dropping-particle, suffix"' do
|
378
|
-
expect(utf.sort_order!.format).to eq('la Martinière, Gérard de, III')
|
379
|
-
end
|
380
|
-
|
381
|
-
end
|
382
|
-
|
383
|
-
end
|
384
|
-
|
385
|
-
describe '#sort_order' do
|
386
|
-
|
387
|
-
it 'returns only a single token for literal names' do
|
388
|
-
expect(Name.new(:literal => 'ACME Corp.').sort_order.size).to eq(1)
|
389
|
-
end
|
390
|
-
|
391
|
-
it 'strips leading "the" off literal names' do
|
392
|
-
expect(Name.new(:literal => 'The ACME Corp.').sort_order[0]).to eq('ACME Corp.')
|
393
|
-
end
|
394
|
-
|
395
|
-
it 'strips leading "a" off literal names' do
|
396
|
-
expect(Name.new(:literal => 'A Company').sort_order[0]).to eq('Company')
|
397
|
-
end
|
398
|
-
|
399
|
-
it 'strips leading "an" off literal names' do
|
400
|
-
expect(Name.new(:literal => 'an ACME Corp.').sort_order[0]).to eq('ACME Corp.')
|
401
|
-
end
|
402
|
-
|
403
|
-
it 'strips leading "l\'" off literal names' do
|
404
|
-
expect(Name.new(:literal => "L'Augustine").sort_order[0]).to eq('Augustine')
|
405
|
-
end
|
406
|
-
|
407
|
-
it 'always returns four tokens for non literal names' do
|
408
|
-
expect(poe.sort_order.size).to eq(4)
|
409
|
-
expect(joe.sort_order.size).to eq(4)
|
410
|
-
expect(aristotle.sort_order.size).to eq(4)
|
411
|
-
expect(utf.sort_order.size).to eq(4)
|
412
|
-
expect(frank.sort_order.size).to eq(4)
|
413
|
-
expect(japanese.sort_order.size).to eq(4)
|
414
|
-
end
|
415
|
-
|
416
|
-
it 'demotes non dropping particles if option is set' do
|
417
|
-
expect(van_gogh.demote_particle!.sort_order).to eq(['Gogh', 'van', 'Vincent', ''])
|
418
|
-
end
|
419
|
-
|
420
|
-
it 'does not demote non dropping particles by default' do
|
421
|
-
expect(van_gogh.sort_order).to eq(['van Gogh', '', 'Vincent', ''])
|
422
|
-
end
|
423
|
-
|
424
|
-
it 'does not demote non dropping particles by default but dropping particles are demoted' do
|
425
|
-
expect(utf.sort_order).to eq(['la Martinière', 'de', 'Gérard', 'III'])
|
426
|
-
end
|
427
|
-
|
428
|
-
it 'demotes dropping particles' do
|
429
|
-
expect(humboldt.sort_order).to eq(['Humboldt', 'von', 'Alexander', ''])
|
430
|
-
end
|
431
|
-
|
432
|
-
it 'combines non dropping particles with family name if option demote-non-dropping-particles is not active' do
|
433
|
-
expect(van_gogh.never_demote_particle!.sort_order).to eq(['van Gogh', '', 'Vincent', ''])
|
434
|
-
end
|
435
|
-
|
436
|
-
end
|
437
|
-
|
438
|
-
describe 'sorting' do
|
439
|
-
|
440
|
-
it 'sorts by sort order by default' do
|
441
|
-
expect([poe, utf, joe, plato].sort).to eq([joe, plato, utf, poe])
|
442
|
-
end
|
443
|
-
|
444
|
-
end
|
445
|
-
|
446
|
-
|
447
|
-
end
|
448
|
-
|
449
|
-
describe Names do
|
450
|
-
|
451
|
-
let(:gang_of_four) {
|
452
|
-
Names.parse!('Erich Gamma and Richard Helm and Ralph Johnson and John Vlissides')
|
453
|
-
}
|
454
|
-
|
455
|
-
it { is_expected.not_to be nil }
|
456
|
-
it { is_expected.not_to be_numeric }
|
457
|
-
|
458
|
-
describe 'constructing' do
|
459
|
-
|
460
|
-
it 'accepts a single name' do
|
461
|
-
expect { Names.new(joe) }.not_to raise_error
|
462
|
-
end
|
463
|
-
|
464
|
-
it 'accepts a single name as hash' do
|
465
|
-
expect(Names.new(:given => 'Jim').names.size).to eq(1)
|
466
|
-
end
|
467
|
-
|
468
|
-
it 'accepts two names' do
|
469
|
-
expect(Names.new(joe, poe).names.size).to eq(2)
|
470
|
-
end
|
471
|
-
|
472
|
-
it 'accepts two names as hash' do
|
473
|
-
expect(Names.new({:given => 'Jim'}, {:family => 'Jameson'}).names.size).to eq(2)
|
474
|
-
end
|
475
|
-
|
476
|
-
it 'accepts an array of names' do
|
477
|
-
expect(Names.new([joe, poe]).names.size).to eq(2)
|
478
|
-
end
|
479
|
-
|
480
|
-
end
|
481
|
-
|
482
|
-
describe 'parsing' do
|
483
|
-
it 'accepts a single name as a string' do
|
484
|
-
expect(Names.parse('Edgar A. Poe').names.size).to eq(1)
|
485
|
-
end
|
486
|
-
|
487
|
-
it 'accepts multiple names as a string' do
|
488
|
-
expect(Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').names.size).to eq(3)
|
489
|
-
end
|
490
|
-
|
491
|
-
it 'parses the passed-in family names' do
|
492
|
-
expect(Names.parse('Edgar A. Poe and Hawthorne, Nathaniel and Herman Melville').map { |n|
|
493
|
-
n.values_at(:family) }.flatten).to eq(%w{ Poe Hawthorne Melville })
|
494
|
-
end
|
495
|
-
|
496
|
-
it '#parse returns nil on error' do
|
497
|
-
expect(Names.parse(23)).to be_nil
|
498
|
-
end
|
499
|
-
|
500
|
-
it '#parse! raises an error on bad input' do
|
501
|
-
expect { Names.parse!('23') }.to raise_error(ParseError)
|
502
|
-
end
|
503
|
-
|
504
|
-
end
|
505
|
-
|
506
|
-
describe '#strip_markup' do
|
507
|
-
|
508
|
-
it 'strips markup off string representation' do
|
509
|
-
expect(Names.new(markup).strip_markup).to eq(utf.to_s)
|
510
|
-
end
|
511
|
-
|
512
|
-
it 'when using the bang! version, strips markup off each name part' do
|
513
|
-
expect(Names.new(markup).strip_markup![0]).to eq(utf)
|
514
|
-
end
|
515
|
-
|
516
|
-
|
517
|
-
end
|
518
|
-
|
519
|
-
describe 'bang! methods' do
|
520
|
-
it 'delegate to the individual names and return self' do
|
521
|
-
expect(Names.new(poe, plato, joe).upcase!.map(&:given)).to eq(['EDGAR ALLEN', 'PLATO', 'JOE'])
|
522
|
-
end
|
523
|
-
end
|
524
|
-
|
525
|
-
[:never, :always, :contextually].each do |setting|
|
526
|
-
setter = "delimiter_#{setting}_precedes_last!"
|
527
|
-
predicate = "delimiter_#{setting}_precedes_last?"
|
528
|
-
|
529
|
-
describe "##{setter}" do
|
530
|
-
it 'sets the delimiter precedes last option accordingly' do
|
531
|
-
expect(Names.new.send(setter).send(predicate)).to eq(true)
|
532
|
-
end
|
533
|
-
end
|
534
|
-
end
|
535
|
-
|
536
|
-
describe '#delimiter_precedes_last' do
|
537
|
-
it 'returns false by default' do
|
538
|
-
expect(Names.new(joe)).not_to be_delimiter_precedes_last
|
539
|
-
end
|
540
|
-
|
541
|
-
it 'returns false by default for a single name' do
|
542
|
-
expect(Names.new(joe)).not_to be_delimiter_precedes_last
|
543
|
-
end
|
544
|
-
|
545
|
-
it 'returns false by default for two names' do
|
546
|
-
expect(Names.new(joe, poe)).not_to be_delimiter_precedes_last
|
547
|
-
end
|
548
|
-
|
549
|
-
it 'returns true for two names when option set to always' do
|
550
|
-
expect(Names.new(joe, poe).delimiter_always_precedes_last!).to be_delimiter_precedes_last
|
551
|
-
end
|
552
|
-
|
553
|
-
it 'returns true by default for three names' do
|
554
|
-
expect(Names.new(joe, poe, plato)).to be_delimiter_precedes_last
|
555
|
-
end
|
556
|
-
|
557
|
-
it 'returns false for three names when option set to :never' do
|
558
|
-
expect(Names.new(joe, poe, plato).delimiter_never_precedes_last!).not_to be_delimiter_precedes_last
|
559
|
-
end
|
560
|
-
end
|
561
|
-
|
562
|
-
describe '#to_bibtex' do
|
563
|
-
|
564
|
-
describe 'when there is only a single name' do
|
565
|
-
it 'prints the name in sort order' do
|
566
|
-
expect(Names.new(poe).to_bibtex).to eq('Poe, Edgar Allen')
|
567
|
-
end
|
568
|
-
end
|
569
|
-
|
570
|
-
describe 'when there are two or more names' do
|
571
|
-
it 'prints the names in sort order connected with the word "and"' do
|
572
|
-
expect(Names.new(poe, plato, humboldt).to_bibtex).to eq('Poe, Edgar Allen and Plato and Humboldt, Alexander von')
|
573
|
-
end
|
574
|
-
end
|
575
|
-
|
576
|
-
end
|
577
|
-
|
578
|
-
describe '#to_s' do
|
579
|
-
|
580
|
-
describe 'when the number of names exceeds the et-al-min option' do
|
581
|
-
before do
|
582
|
-
gang_of_four.options[:'et-al-min'] = 3
|
583
|
-
gang_of_four.options[:'et-al-use-first'] = 2
|
584
|
-
gang_of_four.options[:'et-al'] = 'FOO'
|
585
|
-
end
|
586
|
-
|
587
|
-
it 'prints only the et-al-use-first names' do
|
588
|
-
expect(gang_of_four.to_s).to match(/gamma.+helm/i)
|
589
|
-
expect(gang_of_four.to_s).not_to match(/johnson|vlissides/i)
|
590
|
-
end
|
591
|
-
|
592
|
-
it 'adds et-al at the end' do
|
593
|
-
expect(gang_of_four.to_s).to end_with('FOO')
|
594
|
-
end
|
595
|
-
|
596
|
-
it 'adds the delimiter before et-al when multiple names are printed' do
|
597
|
-
expect(gang_of_four.to_s).to end_with(', FOO')
|
598
|
-
end
|
599
|
-
|
600
|
-
it 'does not add the delimiter before et-al when only one name is printed' do
|
601
|
-
gang_of_four.options[:'et-al-use-first'] = 1
|
602
|
-
expect(gang_of_four.to_s).not_to end_with(', FOO')
|
603
|
-
end
|
604
|
-
|
605
|
-
end
|
606
|
-
|
607
|
-
it 'squeezes multiple whitespace between delimiter and connector' do
|
608
|
-
expect(Names.new(poe, humboldt, van_gogh, joe).to_s).not_to match(/\s{2}/)
|
609
|
-
end
|
610
|
-
end
|
611
|
-
|
612
|
-
describe '#each' do
|
613
|
-
it 'returns an enumerator when no block given' do
|
614
|
-
expect(gang_of_four.each).to respond_to(:each)
|
615
|
-
end
|
616
|
-
end
|
617
|
-
|
618
|
-
describe '#to_citeproc' do
|
619
|
-
it 'returns a list of hashes' do
|
620
|
-
expect(gang_of_four.to_citeproc.map(&:class).uniq).to eq([Hash])
|
621
|
-
end
|
622
|
-
end
|
623
|
-
|
624
|
-
describe 'sorting' do
|
625
|
-
it 'accepts other Names instance' do
|
626
|
-
expect(Names.new(poe, plato) <=> Names.new(plato)).to equal(1)
|
627
|
-
expect(Names.new(plato) <=> Names.new(poe, plato)).to equal(-1)
|
628
|
-
end
|
629
|
-
|
630
|
-
it 'accepts other list of names' do
|
631
|
-
expect(Names.new(poe, plato) <=> [plato]).to equal(1)
|
632
|
-
expect(Names.new(plato) <=> [poe, plato]).to equal(-1)
|
633
|
-
end
|
634
|
-
end
|
635
|
-
|
636
|
-
describe '#inspect' do
|
637
|
-
it 'returns a string' do
|
638
|
-
expect(gang_of_four.inspect).to be_a(String)
|
639
|
-
end
|
640
|
-
end
|
641
|
-
|
642
|
-
end
|
643
|
-
|
644
|
-
end
|
645
|
-
|
646
|
-
end
|