citeproc 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (807) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -3
  3. data/lib/citeproc/version.rb +1 -1
  4. metadata +4 -1606
  5. data/.rspec +0 -3
  6. data/.simplecov +0 -4
  7. data/Guardfile +0 -14
  8. data/cucumber.yml +0 -1
  9. data/features/affix/InterveningEmpty.feature +0 -52
  10. data/features/affix/PrefixFullCitationTextOnly.feature +0 -41
  11. data/features/affix/PrefixWithDecorations.feature +0 -41
  12. data/features/affix/SuppressDelimiterCharsWhenFullStopInSuffix.feature +0 -410
  13. data/features/affix/TextNodeWithMacro.feature +0 -40
  14. data/features/affix/WithCommas.feature +0 -987
  15. data/features/affix/WordProcessorAffixNoSpace.feature +0 -41
  16. data/features/api/SuppressAuthor.feature +0 -48
  17. data/features/api/UpdateItemsDelete.feature +0 -44
  18. data/features/api/UpdateItemsDeleteDecrementsByCiteDisambiguation.feature +0 -46
  19. data/features/api/UpdateItemsReshuffle.feature +0 -44
  20. data/features/bibheader/EntryspacingDefaultValueOne.feature +0 -37
  21. data/features/bibheader/EntryspacingExplicitValueZero.feature +0 -38
  22. data/features/bibheader/SecondFieldAlign.feature +0 -38
  23. data/features/bibheader/SecondFieldAlignWithAuthor.feature +0 -40
  24. data/features/bibheader/SecondFieldAlignWithNumber.feature +0 -44
  25. data/features/bibsection/Exclude.feature +0 -47
  26. data/features/bibsection/Include.feature +0 -47
  27. data/features/bibsection/Quash.feature +0 -48
  28. data/features/bibsection/Select.feature +0 -47
  29. data/features/bugreports/Abnt.feature +0 -59
  30. data/features/bugreports/AccidentalAllCaps.feature +0 -813
  31. data/features/bugreports/AllCapsLeakage.feature +0 -818
  32. data/features/bugreports/ApostropheOnParticle.feature +0 -35
  33. data/features/bugreports/AsaSpacing.feature +0 -49
  34. data/features/bugreports/AsmJournals.feature +0 -153
  35. data/features/bugreports/AuthorYear.feature +0 -343
  36. data/features/bugreports/AutomaticallyDeleteItemsFails.feature +0 -154
  37. data/features/bugreports/BadCitationUpdate.feature +0 -39
  38. data/features/bugreports/BrokenInstitutionalName.feature +0 -390
  39. data/features/bugreports/ChicagoAuthorDateLooping.feature +0 -388
  40. data/features/bugreports/ChineseCharactersFamilyOnlyPluralLabel.feature +0 -36
  41. data/features/bugreports/CitationSortsWithEtAl.feature +0 -74
  42. data/features/bugreports/CollapseFailure.feature +0 -72
  43. data/features/bugreports/ContainerTitleShort.feature +0 -45
  44. data/features/bugreports/ContentPunctuationDuplicate1.feature +0 -40
  45. data/features/bugreports/ContextualPluralWithMainItemFields.feature +0 -34
  46. data/features/bugreports/CreepingAddNames.feature +0 -223
  47. data/features/bugreports/DelimiterBug.feature +0 -984
  48. data/features/bugreports/DelimitersOnLocator.feature +0 -322
  49. data/features/bugreports/DemoPageFullCiteCruftOnSubsequent.feature +0 -711
  50. data/features/bugreports/DisambiguationAddNames.feature +0 -233
  51. data/features/bugreports/DisambiguationAddNamesBibliography.feature +0 -235
  52. data/features/bugreports/DroppingGroupDelimiterSpace.feature +0 -37
  53. data/features/bugreports/DuplicateSpaces.feature +0 -151
  54. data/features/bugreports/DuplicateSpaces2.feature +0 -333
  55. data/features/bugreports/DuplicateSpaces3.feature +0 -200
  56. data/features/bugreports/DuplicateTerminalPunctuationInBibliography.feature +0 -227
  57. data/features/bugreports/EmptyIfMatchNoneFail.feature +0 -38
  58. data/features/bugreports/EtAlSubsequent.feature +0 -41
  59. data/features/bugreports/FourAndFour.feature +0 -715
  60. data/features/bugreports/FrenchApostrophe.feature +0 -34
  61. data/features/bugreports/GreekStyleProblems.feature +0 -1201
  62. data/features/bugreports/GreekStyleTwoEditors.feature +0 -1201
  63. data/features/bugreports/IeeePunctuation.feature +0 -151
  64. data/features/bugreports/LabelsOutOfPlace.feature +0 -715
  65. data/features/bugreports/MovePunctuationInsideQuotesForLocator.feature +0 -714
  66. data/features/bugreports/NoEventInNestedMacroWithOldProcessor.feature +0 -120
  67. data/features/bugreports/NoTitle.feature +0 -346
  68. data/features/bugreports/NumberAffixEscape.feature +0 -35
  69. data/features/bugreports/NumberInMacroWithVerticalAlign.feature +0 -36
  70. data/features/bugreports/NumericStyleFirstRefMultipleCiteFailure.feature +0 -148
  71. data/features/bugreports/OldMhraDisambiguationFailure.feature +0 -411
  72. data/features/bugreports/ProcessorHang1.feature +0 -209
  73. data/features/bugreports/SingleQuote.feature +0 -151
  74. data/features/bugreports/SingletonIfMatchNoneFail.feature +0 -38
  75. data/features/bugreports/SortSecondaryKey.feature +0 -233
  76. data/features/bugreports/SortSecondaryKeyBibliography.feature +0 -235
  77. data/features/bugreports/SortedIeeeItalicsFail.feature +0 -296
  78. data/features/bugreports/ThesisUniversityAppearsTwice.feature +0 -715
  79. data/features/bugreports/TitleCase.feature +0 -33
  80. data/features/bugreports/TwoCitesPlusOneBackref.feature +0 -963
  81. data/features/bugreports/TwoFullStops.feature +0 -394
  82. data/features/bugreports/UndefinedInName.feature +0 -199
  83. data/features/bugreports/UndefinedInName2.feature +0 -184
  84. data/features/bugreports/UndefinedInName3.feature +0 -351
  85. data/features/bugreports/UndefinedNotString.feature +0 -144
  86. data/features/bugreports/UndefinedStr.feature +0 -151
  87. data/features/bugreports/UnisaHarvardInitialization.feature +0 -62
  88. data/features/bugreports/YearSuffixInHarvard1.feature +0 -205
  89. data/features/bugreports/YearSuffixLingers.feature +0 -55
  90. data/features/bugreports/disambiguate.feature +0 -343
  91. data/features/bugreports/ikeyOne.feature +0 -277
  92. data/features/bugreports/parenthesis.feature +0 -333
  93. data/features/bugreports/parseName.feature +0 -46
  94. data/features/bugreports/undefinedCrash.feature +0 -150
  95. data/features/collapse/AuthorCollapse.feature +0 -41
  96. data/features/collapse/AuthorCollapseDifferentAuthorsOneWithEtAl.feature +0 -43
  97. data/features/collapse/AuthorCollapseNoDate.feature +0 -41
  98. data/features/collapse/AuthorCollapseNoDateSorted.feature +0 -45
  99. data/features/collapse/CitationNumberRangesInsert.feature +0 -39
  100. data/features/collapse/CitationNumberRangesMixed.feature +0 -39
  101. data/features/collapse/CitationNumberRangesMixed2.feature +0 -39
  102. data/features/collapse/CitationNumberRangesMixed3.feature +0 -39
  103. data/features/collapse/CitationNumberRangesOneOnly.feature +0 -41
  104. data/features/collapse/CitationNumberRangesWithAffixes.feature +0 -35
  105. data/features/collapse/CitationNumberRangesWithAffixesGrouped.feature +0 -51
  106. data/features/collapse/CitationNumberRangesWithAffixesGroupedLocator.feature +0 -51
  107. data/features/collapse/CitationNumberRangesWithAffixesNoCollapse.feature +0 -36
  108. data/features/collapse/NumericDuplicate.feature +0 -37
  109. data/features/collapse/NumericDuplicate2.feature +0 -34
  110. data/features/collapse/TrailingDelimiter.feature +0 -57
  111. data/features/collapse/YearSuffixCollapse.feature +0 -46
  112. data/features/collapse/YearSuffixCollapseNoRange.feature +0 -46
  113. data/features/collapse/YearSuffixCollapseNoYearSuffixDelimiter.feature +0 -45
  114. data/features/collapse/YearSuffixImplicitCollapseNoYearSuffixDelimiter.feature +0 -44
  115. data/features/condition/EmptyDate.feature +0 -42
  116. data/features/condition/EmptyIsNumericFalse.feature +0 -40
  117. data/features/condition/EmptyIsUncertainDateFalse.feature +0 -40
  118. data/features/condition/EmptyShortTitleFalse.feature +0 -40
  119. data/features/condition/FirstNullAny.feature +0 -38
  120. data/features/condition/IsNumeric.feature +0 -49
  121. data/features/condition/LocatorIsFalse.feature +0 -50
  122. data/features/condition/MatchAll.feature +0 -43
  123. data/features/condition/NameAndTextVars.feature +0 -56
  124. data/features/condition/NumberIsNumeric.feature +0 -40
  125. data/features/condition/NumeralIsNumeric.feature +0 -40
  126. data/features/condition/NumeralWithTextIsNumeric.feature +0 -40
  127. data/features/condition/RefTypeBranching.feature +0 -119
  128. data/features/condition/SingletonIfMatchNone.feature +0 -41
  129. data/features/condition/TextIsNotNumeric.feature +0 -40
  130. data/features/condition/VariableAll.feature +0 -41
  131. data/features/condition/VariableAny.feature +0 -41
  132. data/features/condition/VariableNone.feature +0 -41
  133. data/features/date/Accessed.feature +0 -33
  134. data/features/date/DateAD.feature +0 -37
  135. data/features/date/DateBC.feature +0 -37
  136. data/features/date/DateNoDateNoTest.feature +0 -37
  137. data/features/date/DateNoDateWithTest.feature +0 -45
  138. data/features/date/DayOrdinalDayOneOnly.feature +0 -44
  139. data/features/date/IgnoreNonexistentSort.feature +0 -37
  140. data/features/date/InPress.feature +0 -38
  141. data/features/date/January.feature +0 -33
  142. data/features/date/KeyVariable.feature +0 -46
  143. data/features/date/LiteralFailGracefullyIfNoValue.feature +0 -38
  144. data/features/date/LocalizedDateFormats-af-ZA.feature +0 -57
  145. data/features/date/LocalizedDateFormats-ar-AR.feature +0 -57
  146. data/features/date/LocalizedDateFormats-bg-BG.feature +0 -57
  147. data/features/date/LocalizedDateFormats-ca-AD.feature +0 -57
  148. data/features/date/LocalizedDateFormats-cs-CZ.feature +0 -57
  149. data/features/date/LocalizedDateFormats-da-DK.feature +0 -57
  150. data/features/date/LocalizedDateFormats-de-AT.feature +0 -57
  151. data/features/date/LocalizedDateFormats-de-CH.feature +0 -57
  152. data/features/date/LocalizedDateFormats-de-DE.feature +0 -57
  153. data/features/date/LocalizedDateFormats-el-GR.feature +0 -57
  154. data/features/date/LocalizedDateFormats-en-US.feature +0 -57
  155. data/features/date/LocalizedDateFormats-es-ES.feature +0 -57
  156. data/features/date/LocalizedDateFormats-et-EE.feature +0 -57
  157. data/features/date/LocalizedDateFormats-fr-FR.feature +0 -57
  158. data/features/date/LocalizedDateFormats-he-IL.feature +0 -57
  159. data/features/date/LocalizedDateFormats-hu-HU.feature +0 -57
  160. data/features/date/LocalizedDateFormats-is-IS.feature +0 -57
  161. data/features/date/LocalizedDateFormats-it-IT.feature +0 -57
  162. data/features/date/LocalizedDateFormats-ja-JP.feature +0 -57
  163. data/features/date/LocalizedDateFormats-kh-KH.feature +0 -46
  164. data/features/date/LocalizedDateFormats-ko-KR.feature +0 -57
  165. data/features/date/LocalizedDateFormats-mn-MN.feature +0 -57
  166. data/features/date/LocalizedDateFormats-nb-NO.feature +0 -57
  167. data/features/date/LocalizedDateFormats-nl-NL.feature +0 -57
  168. data/features/date/LocalizedDateFormats-pl-PL.feature +0 -57
  169. data/features/date/LocalizedDateFormats-pt-BR.feature +0 -57
  170. data/features/date/LocalizedDateFormats-pt-PT.feature +0 -57
  171. data/features/date/LocalizedDateFormats-ro-RO.feature +0 -57
  172. data/features/date/LocalizedDateFormats-ru-RU.feature +0 -57
  173. data/features/date/LocalizedDateFormats-sk-SK.feature +0 -57
  174. data/features/date/LocalizedDateFormats-sl-SL.feature +0 -57
  175. data/features/date/LocalizedDateFormats-sr-RS.feature +0 -57
  176. data/features/date/LocalizedDateFormats-sv-SE.feature +0 -57
  177. data/features/date/LocalizedDateFormats-th-TH.feature +0 -57
  178. data/features/date/LocalizedDateFormats-tr-TR.feature +0 -57
  179. data/features/date/LocalizedDateFormats-uk-UA.feature +0 -57
  180. data/features/date/LocalizedDateFormats-vi-VN.feature +0 -57
  181. data/features/date/LocalizedDateFormats-zh-CN.feature +0 -57
  182. data/features/date/LocalizedDateFormats-zh-TW.feature +0 -57
  183. data/features/date/LocalizedNumericDefault.feature +0 -33
  184. data/features/date/LocalizedNumericDefaultMissingDay.feature +0 -33
  185. data/features/date/LocalizedNumericDefaultWithAffixes.feature +0 -33
  186. data/features/date/LocalizedNumericYear.feature +0 -33
  187. data/features/date/LocalizedNumericYearMonth.feature +0 -33
  188. data/features/date/LocalizedNumericYearRange.feature +0 -33
  189. data/features/date/LocalizedNumericYearWithAffixes.feature +0 -33
  190. data/features/date/LocalizedTextDefault.feature +0 -33
  191. data/features/date/LocalizedTextDefaultMissingDay.feature +0 -33
  192. data/features/date/LocalizedTextDefaultWithAffixes.feature +0 -33
  193. data/features/date/LocalizedTextInStyleLocaleWithTextCase.feature +0 -42
  194. data/features/date/LocalizedTextMonthFormOverride.feature +0 -35
  195. data/features/date/LocalizedTextYear.feature +0 -33
  196. data/features/date/LocalizedTextYearMonth.feature +0 -33
  197. data/features/date/LocalizedTextYearWithAffixes.feature +0 -33
  198. data/features/date/LocalizedWithInStyleFormatting.feature +0 -35
  199. data/features/date/LoneJapaneseMonth.feature +0 -33
  200. data/features/date/LongMonth.feature +0 -37
  201. data/features/date/LopsidedDataYearSuffixCollapse.feature +0 -43
  202. data/features/date/MaskNonexistentWithCondition.feature +0 -42
  203. data/features/date/NegativeDateSort.feature +0 -40
  204. data/features/date/NegativeDateSortViaMacro.feature +0 -43
  205. data/features/date/NegativeDateSortViaMacroOnYearMonthOnly.feature +0 -53
  206. data/features/date/NoDate.feature +0 -45
  207. data/features/date/NonexistentSortReverseBibliography.feature +0 -47
  208. data/features/date/NonexistentSortReverseCitation.feature +0 -37
  209. data/features/date/OtherAlone.feature +0 -37
  210. data/features/date/OtherWithDate.feature +0 -37
  211. data/features/date/RawParseSimpleDate.feature +0 -37
  212. data/features/date/RawSeasonRange1.feature +0 -33
  213. data/features/date/RawSeasonRange2.feature +0 -33
  214. data/features/date/RawSeasonRange3.feature +0 -33
  215. data/features/date/SeasonSubstituteInGroup.feature +0 -38
  216. data/features/date/SortEmptyDatesBibliography.feature +0 -53
  217. data/features/date/SortEmptyDatesCitation.feature +0 -42
  218. data/features/date/String.feature +0 -36
  219. data/features/date/TextFormFulldateDayRange.feature +0 -37
  220. data/features/date/TextFormFulldateMonthRange.feature +0 -37
  221. data/features/date/TextFormFulldateYearRange.feature +0 -37
  222. data/features/date/TextFormMonthdateMonthRange.feature +0 -37
  223. data/features/date/TextFormMonthdateYearRange.feature +0 -37
  224. data/features/date/TextFormYeardateYearRange.feature +0 -37
  225. data/features/date/TextFormYeardateYearRangeOpen.feature +0 -37
  226. data/features/date/Uncertain.feature +0 -42
  227. data/features/date/VariousInvalidDates.feature +0 -37
  228. data/features/date/YearSuffixDelimiter.feature +0 -44
  229. data/features/date/YearSuffixImplicitWithNoDate.feature +0 -54
  230. data/features/date/YearSuffixImplicitWithNoDateOneOnly.feature +0 -54
  231. data/features/date/YearSuffixWithNoDate.feature +0 -54
  232. data/features/decorations/AndTermUnaffectedByNameDecorations.feature +0 -38
  233. data/features/decorations/Baseline.feature +0 -48
  234. data/features/decorations/NestedQuotes.feature +0 -33
  235. data/features/decorations/NestedQuotesInnerReverse.feature +0 -33
  236. data/features/decorations/NoNormalWithoutDecoration.feature +0 -41
  237. data/features/decorations/SimpleFlipFlop.feature +0 -33
  238. data/features/decorations/SimpleQuotes.feature +0 -33
  239. data/features/disambiguate/AddNamesFailure.feature +0 -43
  240. data/features/disambiguate/AddNamesFailureWithAddGivenname.feature +0 -44
  241. data/features/disambiguate/AddNamesSuccess.feature +0 -43
  242. data/features/disambiguate/AllNamesBaseNameCountOnFailureIfYearSuffixAvailable.feature +0 -55
  243. data/features/disambiguate/AllNamesGenerally.feature +0 -44
  244. data/features/disambiguate/AllNamesSimpleSequence.feature +0 -42
  245. data/features/disambiguate/AllNamesWithInitialsGenerally.feature +0 -44
  246. data/features/disambiguate/AndreaEg1a.feature +0 -47
  247. data/features/disambiguate/AndreaEg1b.feature +0 -48
  248. data/features/disambiguate/AndreaEg1c.feature +0 -47
  249. data/features/disambiguate/AndreaEg2.feature +0 -49
  250. data/features/disambiguate/AndreaEg3.feature +0 -50
  251. data/features/disambiguate/AndreaEg4.feature +0 -52
  252. data/features/disambiguate/AndreaEg5.feature +0 -53
  253. data/features/disambiguate/BasedOnEtAlSubsequent.feature +0 -44
  254. data/features/disambiguate/BasedOnSubsequentFormWithBackref.feature +0 -63
  255. data/features/disambiguate/BasedOnSubsequentFormWithLocator.feature +0 -67
  256. data/features/disambiguate/ByCiteBaseNameCountOnFailureIfYearSuffixAvailable.feature +0 -47
  257. data/features/disambiguate/ByCiteDisambiguateCondition.feature +0 -54
  258. data/features/disambiguate/ByCiteGivennameExpandCrossNestedNames.feature +0 -40
  259. data/features/disambiguate/ByCiteGivennameNoShortFormInitializeWith.feature +0 -39
  260. data/features/disambiguate/ByCiteGivennameShortFormInitializeWith.feature +0 -40
  261. data/features/disambiguate/ByCiteGivennameShortFormNoInitializeWith.feature +0 -39
  262. data/features/disambiguate/ByCiteIncremental1.feature +0 -355
  263. data/features/disambiguate/ByCiteIncremental2.feature +0 -352
  264. data/features/disambiguate/ByCiteIsDefault.feature +0 -250
  265. data/features/disambiguate/ByCiteMinimalGivennameExpandMinimalNames.feature +0 -48
  266. data/features/disambiguate/ByCiteRetainNamesOnFailureIfYearSuffixNotAvailable.feature +0 -46
  267. data/features/disambiguate/ByCiteTwoAuthorsSameCite.feature +0 -38
  268. data/features/disambiguate/ByCiteTwoAuthorsSameFamilyName.feature +0 -44
  269. data/features/disambiguate/CitationLabelDefault.feature +0 -34
  270. data/features/disambiguate/CitationLabelInData.feature +0 -34
  271. data/features/disambiguate/DifferentSpacingInInitials.feature +0 -40
  272. data/features/disambiguate/DisambiguateTrueAndYearSuffixOne.feature +0 -220
  273. data/features/disambiguate/DisambiguateTrueAndYearSuffixTwo.feature +0 -220
  274. data/features/disambiguate/DisambiguateWithThree.feature +0 -48
  275. data/features/disambiguate/DisambiguateWithThree2.feature +0 -91
  276. data/features/disambiguate/DisambiguationHang.feature +0 -48
  277. data/features/disambiguate/ExtraTextCitation.feature +0 -44
  278. data/features/disambiguate/FailWithYearSuffix.feature +0 -390
  279. data/features/disambiguate/FamilyNameOnly.feature +0 -43
  280. data/features/disambiguate/HonorFullnameInBibliography.feature +0 -49
  281. data/features/disambiguate/ImplicitYearSuffixOnceOnly.feature +0 -56
  282. data/features/disambiguate/IncrementalExtraText.feature +0 -55
  283. data/features/disambiguate/InitializeWithButNoDisambiguation.feature +0 -292
  284. data/features/disambiguate/LastOnlyFailWithByCite.feature +0 -49
  285. data/features/disambiguate/NoTextElementUsesYearSuffixVariable.feature +0 -39
  286. data/features/disambiguate/PrimaryNameGenerally.feature +0 -42
  287. data/features/disambiguate/PrimaryNameWithInitialsLimitedToPrimary.feature +0 -46
  288. data/features/disambiguate/SetsOfNames.feature +0 -205
  289. data/features/disambiguate/SkipAccessedYearSuffix.feature +0 -258
  290. data/features/disambiguate/ThreeNoAuthorNoTitleEntries.feature +0 -63
  291. data/features/disambiguate/ToInitialOnly.feature +0 -39
  292. data/features/disambiguate/Trigraph.feature +0 -36
  293. data/features/disambiguate/YearCollapseWithInstitution.feature +0 -51
  294. data/features/disambiguate/YearSuffixAndSort.feature +0 -50
  295. data/features/disambiguate/YearSuffixAtTwoLevels.feature +0 -45
  296. data/features/disambiguate/YearSuffixFiftyTwoEntries.feature +0 -48
  297. data/features/disambiguate/YearSuffixFiftyTwoEntriesByCite.feature +0 -48
  298. data/features/disambiguate/YearSuffixMacroSameYearExplicit.feature +0 -45
  299. data/features/disambiguate/YearSuffixMacroSameYearImplicit.feature +0 -42
  300. data/features/disambiguate/YearSuffixMidInsert.feature +0 -391
  301. data/features/disambiguate/YearSuffixMixedDates.feature +0 -52
  302. data/features/disambiguate/YearSuffixTwoPairsBibliography.feature +0 -63
  303. data/features/disambiguate/YearSuffixTwoPairsFirstNameBibliography.feature +0 -65
  304. data/features/disambiguate/YearSuffixTwoPairsFullNamesBibliography.feature +0 -63
  305. data/features/disambiguate/YearSuffixWithEtAlSubequent.feature +0 -51
  306. data/features/disambiguate/YearSuffixWithMixedCreatorTypes.feature +0 -53
  307. data/features/discretionary/AuthorDateAuthorOnlyThenSuppressAuthor.feature +0 -46
  308. data/features/discretionary/AuthorOnly.feature +0 -42
  309. data/features/discretionary/CitationNumberAuthorOnlyThenSuppressAuthor.feature +0 -41
  310. data/features/discretionary/CitationNumberSuppressAuthor.feature +0 -40
  311. data/features/discretionary/SuppressAuthorSolo.feature +0 -45
  312. data/features/discretionary/SuppressEditorSolo.feature +0 -45
  313. data/features/discretionary/SuppressEditorSubstitute.feature +0 -45
  314. data/features/discretionary/SuppressMultipleAuthors.feature +0 -45
  315. data/features/display/AuthorAsHeading.feature +0 -80
  316. data/features/display/DisplayBlock.feature +0 -54
  317. data/features/display/SecondFieldAlignClone.feature +0 -65
  318. data/features/display/SecondFieldAlignMigratePunctuation.feature +0 -154
  319. data/features/etal/ShortFormOfName.feature +0 -38
  320. data/features/etal/UseZeroFirst.feature +0 -47
  321. data/features/flipflop/Apostrophes.feature +0 -1064
  322. data/features/flipflop/BoldfaceNodeLevelMarkup.feature +0 -33
  323. data/features/flipflop/ItalicsFlipped.feature +0 -35
  324. data/features/flipflop/ItalicsSimple.feature +0 -39
  325. data/features/flipflop/ItalicsWithOk.feature +0 -48
  326. data/features/flipflop/ItalicsWithOkAndTextcase.feature +0 -48
  327. data/features/flipflop/LeadingSingleQuote.feature +0 -33
  328. data/features/flipflop/QuotesInFieldNotOnNode.feature +0 -33
  329. data/features/flipflop/QuotesNodeLevelMarkup.feature +0 -40
  330. data/features/flipflop/SingleQuotesOnItalics.feature +0 -33
  331. data/features/flipflop/SmallCaps.feature +0 -36
  332. data/features/flipflop/StartingApostrophe.feature +0 -33
  333. data/features/form/TitleShort.feature +0 -33
  334. data/features/form/TitleShortNoLong.feature +0 -33
  335. data/features/form/TitleTestNoLongFalse.feature +0 -40
  336. data/features/fullstyles/ABdNT.feature +0 -675
  337. data/features/fullstyles/APA.feature +0 -361
  338. data/features/fullstyles/ChicagoArticleTitleQuestion.feature +0 -390
  339. data/features/fullstyles/ChicagoAuthorDateSimple.feature +0 -394
  340. data/features/fullstyles/ChicagoNoteWithBibliographyWithPublisher.feature +0 -716
  341. data/features/group/ComplexNesting.feature +0 -397
  342. data/features/group/ShortOutputOnly.feature +0 -35
  343. data/features/group/SuppressTermWhenNoOutputFromPartialDate.feature +0 -39
  344. data/features/group/SuppressValueWithEmptySubgroup.feature +0 -46
  345. data/features/group/SuppressWithEmptyNestedDateNode.feature +0 -202
  346. data/features/integration/CitationSort.feature +0 -50
  347. data/features/integration/CitationSortTwice.feature +0 -51
  348. data/features/integration/CrossCitationIbidOnInsert.feature +0 -82
  349. data/features/integration/DeleteName.feature +0 -36
  350. data/features/integration/DisambiguateAddGivenname1.feature +0 -45
  351. data/features/integration/DisambiguateAddGivenname2.feature +0 -45
  352. data/features/integration/DuplicateItem.feature +0 -45
  353. data/features/integration/DuplicateItem2.feature +0 -45
  354. data/features/integration/FirstReferenceNoteNumberPositionChange.feature +0 -62
  355. data/features/integration/IbidOnInsert.feature +0 -50
  356. data/features/integration/IbidWithDifferentLocators.feature +0 -59
  357. data/features/integration/SimpleFirstReferenceNoteNumber.feature +0 -61
  358. data/features/integration/SimpleIbid.feature +0 -57
  359. data/features/integration/SubsequentWhenInterveningFootnote.feature +0 -51
  360. data/features/integration/YearSuffixOnOffOn.feature +0 -46
  361. data/features/label/CollapsedPageNumberPluralDetection.feature +0 -42
  362. data/features/label/EditorTranslator1.feature +0 -556
  363. data/features/label/EmptyLabelVanish.feature +0 -43
  364. data/features/label/ImplicitForm.feature +0 -36
  365. data/features/label/NoFirstCharCapWithInTextClass.feature +0 -38
  366. data/features/label/NonexistentNameVariableLabel.feature +0 -36
  367. data/features/label/PageWithEmbeddedLabel.feature +0 -35
  368. data/features/label/PluralNumberOfVolumes.feature +0 -36
  369. data/features/label/PluralPagesWithAlphaPrefix.feature +0 -37
  370. data/features/locale/EffectOfStyleDefinition.feature +0 -38
  371. data/features/locale/EmptyDate.feature +0 -41
  372. data/features/locale/EmptyPlusOverrideDate.feature +0 -48
  373. data/features/locale/EmptyPlusOverrideStyleOpt.feature +0 -39
  374. data/features/locale/EmptyPlusOverrideTerm.feature +0 -44
  375. data/features/locale/EmptyStyleOpt.feature +0 -36
  376. data/features/locale/EmptyTerm.feature +0 -39
  377. data/features/locale/ForceEmptyAndOthersTerm.feature +0 -41
  378. data/features/locale/ForceEmptyEtAlTerm.feature +0 -40
  379. data/features/locale/NonExistentLocaleDef.feature +0 -48
  380. data/features/locale/OverloadWithEmptyString.feature +0 -46
  381. data/features/locale/PageRangeDelimiterTermDefined.feature +0 -38
  382. data/features/locale/PageRangeDelimiterTermFrenchUndef.feature +0 -34
  383. data/features/locale/PageRangeDelimiterTermUndefined.feature +0 -33
  384. data/features/locale/SpecificDate.feature +0 -41
  385. data/features/locale/SpecificStyleOpt.feature +0 -36
  386. data/features/locale/SpecificTerm.feature +0 -39
  387. data/features/locale/TermInSort.feature +0 -77
  388. data/features/locale/TitleCaseEmptyLangEmptyLocale.feature +0 -33
  389. data/features/locale/TitleCaseEmptyLangNonEnglishLocale.feature +0 -34
  390. data/features/locale/TitleCaseEnglishLangUpperEmptyLocale.feature +0 -33
  391. data/features/locale/TitleCaseGarbageLangEmptyLocale.feature +0 -33
  392. data/features/locale/TitleCaseGarbageLangEnglishLocale.feature +0 -34
  393. data/features/locale/TitleCaseGarbageLangNonEnglishLocale.feature +0 -34
  394. data/features/locale/TitleCaseNonEnglishLangUpperEmptyLocale.feature +0 -33
  395. data/features/locale/UnknownTerm.feature +0 -34
  396. data/features/locator/SimpleLocators.feature +0 -46
  397. data/features/locator/TermSelection.feature +0 -40
  398. data/features/locator/TrickyEntryForPlurals.feature +0 -40
  399. data/features/locator/WorkaroundTestForSubVerbo.feature +0 -47
  400. data/features/magic/AllowRepeatDateRenderings.feature +0 -47
  401. data/features/magic/CapitalizeFirstOccurringNameParticle.feature +0 -35
  402. data/features/magic/CapitalizeFirstOccurringTerm.feature +0 -33
  403. data/features/magic/CitationLabelInBibliography.feature +0 -234
  404. data/features/magic/CitationLabelInCitation.feature +0 -224
  405. data/features/magic/EntrySpacingDouble.feature +0 -52
  406. data/features/magic/HangingIndent.feature +0 -52
  407. data/features/magic/ImplicitYearSuffixDelimiter.feature +0 -38
  408. data/features/magic/ImplicitYearSuffixExplicitDelimiter.feature +0 -52
  409. data/features/magic/LineSpacingDouble.feature +0 -52
  410. data/features/magic/LineSpacingTripleStretch.feature +0 -52
  411. data/features/magic/NameParticle.feature +0 -35
  412. data/features/magic/NameSuffixNoComma.feature +0 -35
  413. data/features/magic/NameSuffixWithComma.feature +0 -35
  414. data/features/magic/NumberRangeEnglish.feature +0 -33
  415. data/features/magic/NumberRangeFrench.feature +0 -34
  416. data/features/magic/PunctuationInQuoteDefaultEnglishDelimiter.feature +0 -41
  417. data/features/magic/PunctuationInQuoteDefaultEnglishSuffix.feature +0 -39
  418. data/features/magic/PunctuationInQuoteDelimiterTrue.feature +0 -44
  419. data/features/magic/PunctuationInQuoteFalse.feature +0 -44
  420. data/features/magic/PunctuationInQuoteFalseSuppressExtra.feature +0 -37
  421. data/features/magic/PunctuationInQuoteNested.feature +0 -47
  422. data/features/magic/PunctuationInQuoteSuffixTrue.feature +0 -42
  423. data/features/magic/PunctuationInQuoteTrueSuppressExtra.feature +0 -37
  424. data/features/magic/QuotesAndBraces1.feature +0 -36
  425. data/features/magic/QuotesAndBraces2.feature +0 -36
  426. data/features/magic/SecondFieldAlign.feature +0 -57
  427. data/features/magic/StripPeriodsExcludeAffixes.feature +0 -44
  428. data/features/magic/StripPeriodsFalse.feature +0 -34
  429. data/features/magic/StripPeriodsTrue.feature +0 -34
  430. data/features/magic/StripPeriodsTrueShortForm.feature +0 -46
  431. data/features/magic/SubsequentAuthorSubstitute.feature +0 -55
  432. data/features/magic/SubsequentAuthorSubstituteNotFooled.feature +0 -497
  433. data/features/magic/SubsequentAuthorSubstituteOfTitleField.feature +0 -55
  434. data/features/magic/SuperscriptChars.feature +0 -241
  435. data/features/magic/SuppressDuplicateVariableRendering.feature +0 -43
  436. data/features/magic/SuppressExtraTerminalPunctuationAfterTerm.feature +0 -410
  437. data/features/magic/SuppressLayoutDelimiterIfPrefixComma.feature +0 -34
  438. data/features/magic/TermCapitalizationWithPrefix.feature +0 -49
  439. data/features/magic/TextRangeEnglish.feature +0 -33
  440. data/features/magic/TextRangeFrench.feature +0 -34
  441. data/features/name/AfterInvertedName.feature +0 -42
  442. data/features/name/AllCapsInitialsUntouched.feature +0 -46
  443. data/features/name/AndTextDelimiterPrecedesLastAlways.feature +0 -35
  444. data/features/name/ArticularNameAsSortOrder.feature +0 -35
  445. data/features/name/ArticularPlain.feature +0 -35
  446. data/features/name/ArticularShortForm.feature +0 -35
  447. data/features/name/ArticularShortFormCommaSuffix.feature +0 -35
  448. data/features/name/ArticularWithComma.feature +0 -35
  449. data/features/name/ArticularWithCommaNameAsSortOrder.feature +0 -35
  450. data/features/name/Asian.feature +0 -35
  451. data/features/name/AsianGlyphs.feature +0 -35
  452. data/features/name/AuthorCount.feature +0 -39
  453. data/features/name/AuthorCountWithMultipleVariables.feature +0 -37
  454. data/features/name/AuthorCountWithSameVarContentAndCombinedTermFail.feature +0 -45
  455. data/features/name/AuthorCountWithSameVarContentAndCombinedTermSucceed.feature +0 -45
  456. data/features/name/AuthorEditorCount.feature +0 -37
  457. data/features/name/CelticClanName.feature +0 -35
  458. data/features/name/CeltsAndToffsCrowdedInitials.feature +0 -35
  459. data/features/name/CeltsAndToffsNoHyphens.feature +0 -36
  460. data/features/name/CeltsAndToffsSpacedInitials.feature +0 -35
  461. data/features/name/CeltsAndToffsWithHyphens.feature +0 -36
  462. data/features/name/CollapseRoleLabels.feature +0 -46
  463. data/features/name/Delimiter.feature +0 -37
  464. data/features/name/EditorTranslatorBoth.feature +0 -189
  465. data/features/name/EditorTranslatorSameEmptyTerm.feature +0 -41
  466. data/features/name/EditorTranslatorSameWithTerm.feature +0 -36
  467. data/features/name/EditorTranslatorWithTranslatorOnly.feature +0 -35
  468. data/features/name/EditorTranslatorWithTranslatorOnlyBib.feature +0 -189
  469. data/features/name/EtAlUseLast.feature +0 -47
  470. data/features/name/FormattingOfParticles.feature +0 -37
  471. data/features/name/GreekSimple.feature +0 -35
  472. data/features/name/HebrewAnd.feature +0 -40
  473. data/features/name/HierarchicalDelimiter.feature +0 -35
  474. data/features/name/HyphenatedFirstName.feature +0 -35
  475. data/features/name/HyphenatedNonDroppingParticle1.feature +0 -51
  476. data/features/name/HyphenatedNonDroppingParticle2.feature +0 -51
  477. data/features/name/InheritAttributesEtAlStyle.feature +0 -37
  478. data/features/name/Institution.feature +0 -35
  479. data/features/name/InstitutionDecoration.feature +0 -45
  480. data/features/name/LabelAfterPlural.feature +0 -36
  481. data/features/name/LabelAfterPluralDecorations.feature +0 -38
  482. data/features/name/LongAbbreviation.feature +0 -35
  483. data/features/name/LowercaseSurnameSuffix.feature +0 -35
  484. data/features/name/MixedFormatsInitialSortOrderAllWithDecorationsEtAl.feature +0 -39
  485. data/features/name/MixedFormatsInitialSortOrderFirstWithDecorationsEtAl.feature +0 -39
  486. data/features/name/MixedFormatsInitialsWithDecorationsEtAl.feature +0 -39
  487. data/features/name/MixedFormatsPrimaryDecorations.feature +0 -37
  488. data/features/name/MixedFormatsWithDecorationsEtAl.feature +0 -39
  489. data/features/name/MixedFormatsWithDecorationsPlusAlternateEtAlDecorations.feature +0 -40
  490. data/features/name/MixedFormatsWithDecorationsPlusEtAlDecorations.feature +0 -40
  491. data/features/name/MultipleLiteral.feature +0 -35
  492. data/features/name/NoNameNode.feature +0 -33
  493. data/features/name/NonDroppingParticleDefault.feature +0 -35
  494. data/features/name/OnlyFamilyname.feature +0 -35
  495. data/features/name/OnlyGivenname.feature +0 -35
  496. data/features/name/OverridingHierarchicalDelimiter.feature +0 -36
  497. data/features/name/ParseNames.feature +0 -39
  498. data/features/name/ParsedCommaDelimitedDroppingParticleNormalOrderingWithAffixes.feature +0 -38
  499. data/features/name/ParsedCommaDelimitedDroppingParticleNormalOrderingWithoutAffixes.feature +0 -36
  500. data/features/name/ParsedCommaDelimitedDroppingParticleSortOrderingWithoutAffixes.feature +0 -38
  501. data/features/name/ParsedDroppingParticleWithAffixes.feature +0 -39
  502. data/features/name/ParsedDroppingParticleWithApostrophe.feature +0 -38
  503. data/features/name/ParsedNonDroppingParticleWithAffixes.feature +0 -39
  504. data/features/name/ParsedNonDroppingParticleWithApostrophe.feature +0 -39
  505. data/features/name/ParsedUpperCaseNonDroppingParticle.feature +0 -39
  506. data/features/name/ParticleCaps1.feature +0 -40
  507. data/features/name/ParticleCaps2.feature +0 -46
  508. data/features/name/ParticleCaps3.feature +0 -47
  509. data/features/name/ParticleFormatting.feature +0 -38
  510. data/features/name/ParticlesDemoteNonDroppingNever.feature +0 -99
  511. data/features/name/PeriodAfterInitials.feature +0 -38
  512. data/features/name/QuashOrdinaryVariableRenderedViaSubstitute.feature +0 -39
  513. data/features/name/RomanianTwo.feature +0 -36
  514. data/features/name/SemicolonWithAnd.feature +0 -38
  515. data/features/name/SplitInitials.feature +0 -35
  516. data/features/name/SubsequentAuthorSubstituteMultipleNames.feature +0 -50
  517. data/features/name/SubstituteInheritLabel.feature +0 -44
  518. data/features/name/SubstituteMacroInheritDecorations.feature +0 -42
  519. data/features/name/SubstituteName.feature +0 -38
  520. data/features/name/SubstituteOnDateGroupSpanFail.feature +0 -45
  521. data/features/name/SubstituteOnGroupSpanGroupSpanFail.feature +0 -46
  522. data/features/name/SubstituteOnMacroGroupSpanFail.feature +0 -46
  523. data/features/name/SubstituteOnNamesSingletonGroupSpanFail.feature +0 -42
  524. data/features/name/SubstituteOnNamesSpanGroupSpanFail.feature +0 -44
  525. data/features/name/SubstituteOnNamesSpanNamesSpanFail.feature +0 -43
  526. data/features/name/SubstituteOnNumberGroupSpanFail.feature +0 -42
  527. data/features/name/TwoRolesSameRenderingSeparateRoleLabels.feature +0 -43
  528. data/features/name/WesternArticularLowercase.feature +0 -35
  529. data/features/name/WesternPrimaryFontStyle.feature +0 -37
  530. data/features/name/WesternPrimaryFontStyleTwoAuthors.feature +0 -37
  531. data/features/name/WesternSimple.feature +0 -35
  532. data/features/name/WesternTwoAuthors.feature +0 -35
  533. data/features/name/namepartAffixes.feature +0 -38
  534. data/features/name/namepartAffixesNameAsSortOrder.feature +0 -39
  535. data/features/name/namepartAffixesNameAsSortOrderDemoteNonDroppingParticle.feature +0 -39
  536. data/features/nameattr/AndOnBibliographyInBibliography.feature +0 -43
  537. data/features/nameattr/AndOnBibliographyInCitation.feature +0 -43
  538. data/features/nameattr/AndOnCitationInBibliography.feature +0 -45
  539. data/features/nameattr/AndOnCitationInCitation.feature +0 -36
  540. data/features/nameattr/AndOnNamesInBibliography.feature +0 -42
  541. data/features/nameattr/AndOnNamesInCitation.feature +0 -35
  542. data/features/nameattr/AndOnStyleInBibliography.feature +0 -43
  543. data/features/nameattr/AndOnStyleInCitation.feature +0 -43
  544. data/features/nameattr/DelimiterPrecedesEtAlOnBibliographyInBibliography.feature +0 -43
  545. data/features/nameattr/DelimiterPrecedesEtAlOnBibliographyInCitation.feature +0 -43
  546. data/features/nameattr/DelimiterPrecedesEtAlOnCitationInBibliography.feature +0 -45
  547. data/features/nameattr/DelimiterPrecedesEtAlOnCitationInCitation.feature +0 -36
  548. data/features/nameattr/DelimiterPrecedesEtAlOnNamesInBibliography.feature +0 -42
  549. data/features/nameattr/DelimiterPrecedesEtAlOnNamesInCitation.feature +0 -35
  550. data/features/nameattr/DelimiterPrecedesEtAlOnStyleInBibliography.feature +0 -43
  551. data/features/nameattr/DelimiterPrecedesEtAlOnStyleInCitation.feature +0 -36
  552. data/features/nameattr/DelimiterPrecedesLastOnBibliographyInBibliography.feature +0 -43
  553. data/features/nameattr/DelimiterPrecedesLastOnBibliographyInCitation.feature +0 -43
  554. data/features/nameattr/DelimiterPrecedesLastOnCitationInBibliography.feature +0 -45
  555. data/features/nameattr/DelimiterPrecedesLastOnCitationInCitation.feature +0 -36
  556. data/features/nameattr/DelimiterPrecedesLastOnNamesInBibliography.feature +0 -42
  557. data/features/nameattr/DelimiterPrecedesLastOnNamesInCitation.feature +0 -35
  558. data/features/nameattr/DelimiterPrecedesLastOnStyleInBibliography.feature +0 -43
  559. data/features/nameattr/DelimiterPrecedesLastOnStyleInCitation.feature +0 -36
  560. data/features/nameattr/EtAlMinOnBibliographyInBibliography.feature +0 -43
  561. data/features/nameattr/EtAlMinOnBibliographyInCitation.feature +0 -43
  562. data/features/nameattr/EtAlMinOnCitationInBibliography.feature +0 -45
  563. data/features/nameattr/EtAlMinOnCitationInCitation.feature +0 -36
  564. data/features/nameattr/EtAlMinOnNamesInBibliography.feature +0 -42
  565. data/features/nameattr/EtAlMinOnNamesInCitation.feature +0 -35
  566. data/features/nameattr/EtAlMinOnStyleInBibliography.feature +0 -42
  567. data/features/nameattr/EtAlMinOnStyleInCitation.feature +0 -35
  568. data/features/nameattr/EtAlSubsequentMinOnBibliographyInBibliography.feature +0 -43
  569. data/features/nameattr/EtAlSubsequentMinOnBibliographyInCitation.feature +0 -43
  570. data/features/nameattr/EtAlSubsequentMinOnCitationInBibliography.feature +0 -45
  571. data/features/nameattr/EtAlSubsequentMinOnCitationInCitation.feature +0 -37
  572. data/features/nameattr/EtAlSubsequentMinOnNamesInBibliography.feature +0 -42
  573. data/features/nameattr/EtAlSubsequentMinOnStyleInBibliography.feature +0 -42
  574. data/features/nameattr/EtAlSubsequentMinOnStyleInCitation.feature +0 -38
  575. data/features/nameattr/EtAlSubsequentUseFirstOnBibliographyInBibliography.feature +0 -43
  576. data/features/nameattr/EtAlSubsequentUseFirstOnBibliographyInCitation.feature +0 -43
  577. data/features/nameattr/EtAlSubsequentUseFirstOnCitationInBibliography.feature +0 -45
  578. data/features/nameattr/EtAlSubsequentUseFirstOnCitationInCitation.feature +0 -44
  579. data/features/nameattr/EtAlSubsequentUseFirstOnStyleInBibliography.feature +0 -43
  580. data/features/nameattr/EtAlSubsequentUseFirstOnStyleInCitation.feature +0 -37
  581. data/features/nameattr/EtAlUseFirstOnBibliographyInBibliography.feature +0 -43
  582. data/features/nameattr/EtAlUseFirstOnBibliographyInCitation.feature +0 -43
  583. data/features/nameattr/EtAlUseFirstOnCitationInBibliography.feature +0 -45
  584. data/features/nameattr/EtAlUseFirstOnCitationInCitation.feature +0 -43
  585. data/features/nameattr/EtAlUseFirstOnNamesInBibliography.feature +0 -42
  586. data/features/nameattr/EtAlUseFirstOnNamesInCitation.feature +0 -35
  587. data/features/nameattr/EtAlUseFirstOnStyleInBibliography.feature +0 -43
  588. data/features/nameattr/EtAlUseFirstOnStyleInCitation.feature +0 -35
  589. data/features/nameattr/InitializeWithOnBibliographyInBibliography.feature +0 -43
  590. data/features/nameattr/InitializeWithOnBibliographyInCitation.feature +0 -43
  591. data/features/nameattr/InitializeWithOnCitationInBibliography.feature +0 -45
  592. data/features/nameattr/InitializeWithOnCitationInCitation.feature +0 -36
  593. data/features/nameattr/InitializeWithOnNamesInBibliography.feature +0 -42
  594. data/features/nameattr/InitializeWithOnNamesInCitation.feature +0 -35
  595. data/features/nameattr/InitializeWithOnStyleInBibliography.feature +0 -43
  596. data/features/nameattr/InitializeWithOnStyleInCitation.feature +0 -36
  597. data/features/nameattr/NameAsSortOrderOnBibliographyInBibliography.feature +0 -43
  598. data/features/nameattr/NameAsSortOrderOnBibliographyInCitation.feature +0 -43
  599. data/features/nameattr/NameAsSortOrderOnCitationInBibliography.feature +0 -45
  600. data/features/nameattr/NameAsSortOrderOnCitationInCitation.feature +0 -36
  601. data/features/nameattr/NameAsSortOrderOnNamesInBibliography.feature +0 -42
  602. data/features/nameattr/NameAsSortOrderOnNamesInCitation.feature +0 -35
  603. data/features/nameattr/NameAsSortOrderOnStyleInBibliography.feature +0 -43
  604. data/features/nameattr/NameAsSortOrderOnStyleInCitation.feature +0 -35
  605. data/features/nameattr/NameDelimiterOnBibliographyInBibliography.feature +0 -43
  606. data/features/nameattr/NameDelimiterOnBibliographyInCitation.feature +0 -43
  607. data/features/nameattr/NameDelimiterOnCitationInBibliography.feature +0 -45
  608. data/features/nameattr/NameDelimiterOnCitationInCitation.feature +0 -43
  609. data/features/nameattr/NameDelimiterOnNamesInBibliography.feature +0 -42
  610. data/features/nameattr/NameDelimiterOnNamesInCitation.feature +0 -42
  611. data/features/nameattr/NameDelimiterOnStyleInBibliography.feature +0 -43
  612. data/features/nameattr/NameDelimiterOnStyleInCitation.feature +0 -43
  613. data/features/nameattr/NameFormOnBibliographyInBibliography.feature +0 -43
  614. data/features/nameattr/NameFormOnBibliographyInCitation.feature +0 -43
  615. data/features/nameattr/NameFormOnCitationInBibliography.feature +0 -45
  616. data/features/nameattr/NameFormOnCitationInCitation.feature +0 -43
  617. data/features/nameattr/NameFormOnNamesInBibliography.feature +0 -42
  618. data/features/nameattr/NameFormOnNamesInCitation.feature +0 -35
  619. data/features/nameattr/NameFormOnStyleInBibliography.feature +0 -43
  620. data/features/nameattr/NameFormOnStyleInCitation.feature +0 -36
  621. data/features/nameattr/NamesDelimiterOnBibliographyInBibliography.feature +0 -43
  622. data/features/nameattr/NamesDelimiterOnBibliographyInCitation.feature +0 -43
  623. data/features/nameattr/NamesDelimiterOnCitationInBibliography.feature +0 -45
  624. data/features/nameattr/NamesDelimiterOnCitationInCitation.feature +0 -36
  625. data/features/nameattr/NamesDelimiterOnNamesInBibliography.feature +0 -42
  626. data/features/nameattr/NamesDelimiterOnNamesInCitation.feature +0 -35
  627. data/features/nameattr/NamesDelimiterOnStyleInBibliography.feature +0 -42
  628. data/features/nameattr/NamesDelimiterOnStyleInCitation.feature +0 -36
  629. data/features/nameattr/SortSeparatorOnBibliographyInBibliography.feature +0 -43
  630. data/features/nameattr/SortSeparatorOnBibliographyInCitation.feature +0 -44
  631. data/features/nameattr/SortSeparatorOnCitationInBibliography.feature +0 -45
  632. data/features/nameattr/SortSeparatorOnCitationInCitation.feature +0 -36
  633. data/features/nameattr/SortSeparatorOnNamesInBibliography.feature +0 -42
  634. data/features/nameattr/SortSeparatorOnNamesInCitation.feature +0 -35
  635. data/features/nameattr/SortSeparatorOnStyleInBibliography.feature +0 -43
  636. data/features/nameattr/SortSeparatorOnStyleInCitation.feature +0 -36
  637. data/features/nameorder/Long.feature +0 -35
  638. data/features/nameorder/LongNameAsSortDemoteDisplayAndSort.feature +0 -36
  639. data/features/nameorder/LongNameAsSortDemoteNever.feature +0 -36
  640. data/features/nameorder/Short.feature +0 -35
  641. data/features/nameorder/ShortDemoteDisplayAndSort.feature +0 -36
  642. data/features/nameorder/ShortNameAsSortDemoteNever.feature +0 -36
  643. data/features/namespaces/NonNada3.feature +0 -33
  644. data/features/number/EditionSort.feature +0 -47
  645. data/features/number/FailingDelimiters.feature +0 -44
  646. data/features/number/IsNumericWithAlpha.feature +0 -40
  647. data/features/number/MixedPageRange.feature +0 -34
  648. data/features/number/MixedText.feature +0 -33
  649. data/features/number/NewOrdinals.feature +0 -64
  650. data/features/number/NewOrdinalsEdition.feature +0 -1044
  651. data/features/number/NewOrdinalsWithGenderChange.feature +0 -45
  652. data/features/number/PageFirst.feature +0 -36
  653. data/features/number/PageRange.feature +0 -33
  654. data/features/number/PlainHyphenOrEnDashAlwaysPlural.feature +0 -42
  655. data/features/number/SeparateOrdinalNamespaces.feature +0 -55
  656. data/features/number/SimpleNumberArabic.feature +0 -33
  657. data/features/number/SimpleNumberOrdinalLong.feature +0 -35
  658. data/features/number/SimpleNumberOrdinalShort.feature +0 -33
  659. data/features/number/SimpleNumberRoman.feature +0 -33
  660. data/features/number/StrangeError.feature +0 -34
  661. data/features/page/Chicago.feature +0 -55
  662. data/features/page/Expand.feature +0 -42
  663. data/features/page/Minimal.feature +0 -55
  664. data/features/page/NoOption.feature +0 -34
  665. data/features/page/NumberPageFirst.feature +0 -33
  666. data/features/page/PluralDetectWithEndash.feature +0 -33
  667. data/features/parallel/Bibliography.feature +0 -87
  668. data/features/parallel/HackedChicago.feature +0 -715
  669. data/features/parallel/JournalArticleReverse.feature +0 -46
  670. data/features/parallel/JournalArticleSimple.feature +0 -46
  671. data/features/parallel/TrailingIbid.feature +0 -69
  672. data/features/plural/LabelForced.feature +0 -37
  673. data/features/plural/NameLabelAlways.feature +0 -36
  674. data/features/plural/NameLabelContextualPlural.feature +0 -36
  675. data/features/plural/NameLabelContextualSingular.feature +0 -36
  676. data/features/plural/NameLabelDefaultPlural.feature +0 -36
  677. data/features/plural/NameLabelDefaultSingular.feature +0 -36
  678. data/features/plural/NameLabelNever.feature +0 -36
  679. data/features/position/FalseInBibliography.feature +0 -47
  680. data/features/position/FirstTrueOnlyOnce.feature +0 -55
  681. data/features/position/IbidInText.feature +0 -51
  682. data/features/position/IbidSeparateCiteSameNote.feature +0 -80
  683. data/features/position/IbidWithLocator.feature +0 -52
  684. data/features/position/IbidWithMultipleSoloCitesInBackref.feature +0 -52
  685. data/features/position/IbidWithPrefixFullStop.feature +0 -44
  686. data/features/position/IbidWithSuffix.feature +0 -54
  687. data/features/position/IfIbidIsTrueThenSubsequentIsTrue.feature +0 -61
  688. data/features/position/IfIbidWithLocatorIsTrueThenIbidIsTrue.feature +0 -58
  689. data/features/position/NearNoteFalse.feature +0 -41
  690. data/features/position/NearNoteSameNote.feature +0 -43
  691. data/features/position/NearNoteTrue.feature +0 -41
  692. data/features/position/NearNoteUnsupported.feature +0 -40
  693. data/features/position/NearNoteWithPlugin.feature +0 -454
  694. data/features/position/ResetNoteNumbers.feature +0 -54
  695. data/features/position/TrueInCitation.feature +0 -45
  696. data/features/punctuation/DateStripPeriods.feature +0 -36
  697. data/features/punctuation/DefaultYearSuffixDelimiter.feature +0 -183
  698. data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute1.feature +0 -53
  699. data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute2.feature +0 -52
  700. data/features/punctuation/DelimiterWithStripPeriodsAndSubstitute3.feature +0 -60
  701. data/features/punctuation/DoNotSuppressColonAfterPeriod.feature +0 -34
  702. data/features/punctuation/FrenchOrthography.feature +0 -33
  703. data/features/punctuation/FullMontyField.feature +0 -230
  704. data/features/punctuation/FullMontyPlain.feature +0 -230
  705. data/features/punctuation/FullMontyQuotesIn.feature +0 -233
  706. data/features/punctuation/FullMontyQuotesOut.feature +0 -233
  707. data/features/punctuation/NoSuppressOfPeriodBeforeSemicolon.feature +0 -36
  708. data/features/punctuation/SemicolonDelimiter.feature +0 -62
  709. data/features/punctuation/SuppressPrefixPeriodForDelimiterSemicolon.feature +0 -715
  710. data/features/quotes/Punctuation.feature +0 -43
  711. data/features/quotes/PunctuationNasty.feature +0 -977
  712. data/features/quotes/PunctuationWithInnerQuote.feature +0 -43
  713. data/features/simplespace/case1.feature +0 -202
  714. data/features/sort/AguStyle.feature +0 -94
  715. data/features/sort/AguStyleReverseGroups.feature +0 -94
  716. data/features/sort/AuthorDateWithYearSuffix.feature +0 -202
  717. data/features/sort/BibliographyCitationNumberDescending.feature +0 -51
  718. data/features/sort/BibliographyCitationNumberDescendingViaMacro.feature +0 -54
  719. data/features/sort/BibliographyNosortOption.feature +0 -44
  720. data/features/sort/CaseInsensitiveBibliography.feature +0 -55
  721. data/features/sort/CaseInsensitiveCitation.feature +0 -36
  722. data/features/sort/ChangeInNameSort.feature +0 -54
  723. data/features/sort/ChicagoYearSuffix1.feature +0 -391
  724. data/features/sort/ChicagoYearSuffix2.feature +0 -391
  725. data/features/sort/Citation.feature +0 -42
  726. data/features/sort/CitationEdit.feature +0 -49
  727. data/features/sort/CitationSecondaryKey.feature +0 -46
  728. data/features/sort/CitationUnsorted.feature +0 -42
  729. data/features/sort/CiteGroupDelimiter.feature +0 -45
  730. data/features/sort/ConditionalMacroDates.feature +0 -64
  731. data/features/sort/DateMacroSortWithSecondFieldAlign.feature +0 -56
  732. data/features/sort/DateVariable.feature +0 -36
  733. data/features/sort/DateVariableMixedElementsAscendingA.feature +0 -36
  734. data/features/sort/DateVariableMixedElementsAscendingB.feature +0 -36
  735. data/features/sort/DateVariableMixedElementsDescendingA.feature +0 -36
  736. data/features/sort/DateVariableMixedElementsDescendingB.feature +0 -36
  737. data/features/sort/DateVariableRange.feature +0 -36
  738. data/features/sort/DateVariableRangeMixed.feature +0 -36
  739. data/features/sort/DropNameLabelInSort.feature +0 -116
  740. data/features/sort/EtAlUseLast.feature +0 -54
  741. data/features/sort/FamilyOnly.feature +0 -45
  742. data/features/sort/GroupedByAuthorstring.feature +0 -50
  743. data/features/sort/LatinUnicode.feature +0 -42
  744. data/features/sort/LeadingApostropheOnNameParticle.feature +0 -55
  745. data/features/sort/LocalizedDateLimitedParts.feature +0 -40
  746. data/features/sort/NameImplicitSortOrderAndForm.feature +0 -51
  747. data/features/sort/NameParticleInNameSortFalse.feature +0 -48
  748. data/features/sort/NameParticleInNameSortTrue.feature +0 -48
  749. data/features/sort/NameVariable.feature +0 -47
  750. data/features/sort/NamesUseLast.feature +0 -64
  751. data/features/sort/NumberOfAuthorsAsKey.feature +0 -68
  752. data/features/sort/SeparateAuthorsAndOthers.feature +0 -127
  753. data/features/sort/StatusFieldAscending.feature +0 -46
  754. data/features/sort/StatusFieldDescending.feature +0 -46
  755. data/features/sort/StripMarkup.feature +0 -39
  756. data/features/sort/SubstituteTitle.feature +0 -398
  757. data/features/sort/VariousNameMacros1.feature +0 -287
  758. data/features/sort/VariousNameMacros2.feature +0 -287
  759. data/features/sort/VariousNameMacros3.feature +0 -288
  760. data/features/sort/WithAndInOneEntry.feature +0 -228
  761. data/features/sortseparator/SortSeparatorEmpty.feature +0 -44
  762. data/features/step_definitions/processor.rb +0 -59
  763. data/features/substitute/RepeatedNamesOk.feature +0 -52
  764. data/features/substitute/SuppressOrdinaryVariable.feature +0 -79
  765. data/features/support/env.rb +0 -49
  766. data/features/testers/FirstAutoGeneratedZoteroPluginTest.feature +0 -715
  767. data/features/testers/SecondAutoGeneratedZoteroPluginTest.feature +0 -717
  768. data/features/textcase/CapitalizeAll.feature +0 -33
  769. data/features/textcase/CapitalizeFirst.feature +0 -33
  770. data/features/textcase/CapitalizeFirstWithDecor.feature +0 -33
  771. data/features/textcase/CapitalsUntouched.feature +0 -37
  772. data/features/textcase/Lowercase.feature +0 -33
  773. data/features/textcase/SentenceCapitalization.feature +0 -33
  774. data/features/textcase/SkipNameParticlesInTitleCase.feature +0 -33
  775. data/features/textcase/TitleCapitalization.feature +0 -33
  776. data/features/textcase/TitleCaseNonEnglish.feature +0 -33
  777. data/features/textcase/TitleCaseNonEnglish2.feature +0 -34
  778. data/features/textcase/TitleCaseWithHyphens.feature +0 -33
  779. data/features/textcase/TitleCaseWithInitials.feature +0 -33
  780. data/features/textcase/Uppercase.feature +0 -59
  781. data/features/textcase/UppercaseNumber.feature +0 -33
  782. data/features/unicode/NonBreakingSpace.feature +0 -34
  783. data/features/variables/ShortForm.feature +0 -54
  784. data/features/variables/TitleShortOnAbbrevWithTitle.feature +0 -37
  785. data/features/variables/TitleShortOnAbbrevWithTitleCondition.feature +0 -57
  786. data/features/variables/TitleShortOnAbbrevWithTitleGroup.feature +0 -44
  787. data/features/variables/TitleShortOnShortTitleNoTitle.feature +0 -33
  788. data/features/variables/TitleShortOnShortTitleNoTitleCondition.feature +0 -53
  789. data/features/variables/TitleShortOnShortTitleNoTitleGroup.feature +0 -40
  790. data/features/virtual/PageFirst.feature +0 -37
  791. data/spec/citeproc/abbreviate_spec.rb +0 -37
  792. data/spec/citeproc/assets_spec.rb +0 -72
  793. data/spec/citeproc/attributes_spec.rb +0 -97
  794. data/spec/citeproc/bibliography_spec.rb +0 -72
  795. data/spec/citeproc/citation_data_spec.rb +0 -94
  796. data/spec/citeproc/date_spec.rb +0 -423
  797. data/spec/citeproc/engine_spec.rb +0 -19
  798. data/spec/citeproc/extensions_spec.rb +0 -89
  799. data/spec/citeproc/item_spec.rb +0 -91
  800. data/spec/citeproc/names_spec.rb +0 -646
  801. data/spec/citeproc/processor_spec.rb +0 -127
  802. data/spec/citeproc/selector_spec.rb +0 -90
  803. data/spec/citeproc/utilities_spec.rb +0 -12
  804. data/spec/citeproc/variable_spec.rb +0 -196
  805. data/spec/fixtures/locales/locales-en-US.xml +0 -304
  806. data/spec/spec_helper.rb +0 -42
  807. 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
@@ -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
@@ -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