コード例 #1
0
        JSInlineCitation CreateInlineCitation(IEnumerable <EntryAndPagePair> itemSources, object idToUse = null)
        {
            // ****IMPORTANT****
            // This is called from InsertCitationSequence, InsertCitation, EditCitation and CitationInserter.UpdateCitationsFromDatabase
            //
            // It is imperative that calls from the first 3 work on an empty CiteProc otherwise the cache gets used to create
            // the citation items. Other than first-use, this means using the item after CiteProc has seen it and maybe modified it
            // (it appears to change the Date Parts to strings in some cases)
            // The next refresh is then comparing incorrect JSON and will want to update it from the database.
            //
            // (CitationInserter.UpdateCitationsFromDatabase calls here but this is always within a Refresh which means a brand new CiteProc anyway
            // and so multiple resets here are not a problem because the raw cache would be empty anyway)
            CiteProc.ResetProcessorState();

            var result = new JSInlineCitation(CiteProc);

            if (idToUse != null)
            {
                result.CitationID = idToUse;
            }

            result.Properties.NoteIndex = 0;

            foreach (var itemSource in itemSources)
            {
                var inlineCitationItem = CiteProc.CreateJSInlineCitationItem(itemSource);

                result.CitationItems.Add(inlineCitationItem);
            }

            // We store this before Citeproc gets hold of it!
            result.FieldCodeJSON = CiteProc.ToJSON(result.JSObject, JSONWhitespace).Replace('\n', '\v') + FieldCodeSeparator;

            return(result);
        }
コード例 #2
0
		public void XXXNew()
		{

			var database = BibTexHelper.LoadBibTextDatabase(@"Sample Files\Mendeley 2.bib");
			//var database = BibTexHelper.LoadBibTextDatabase(@"Sample Files\b4w.bib");
			//var database = BibTexHelper.LoadBibTextDatabase(@"Sample Files\BigFile.bib");
			var citeproc = new CiteProcRunner(HavardCslStyle, () => database);
			var converter = new BibTexToCSLConverter(citeproc);

			var result = converter.CreateItem(database);
			var q = citeproc.ToJSON(result.JSObject);

			File.WriteAllText(@"F:\new.txt", q);

//			Debug.WriteLine(q);
		}
コード例 #3
0
		public void NewInlineCitation()
		{
			var citeproc = new CiteProcRunner(HavardCslStyle, () => DocearDatabase);

			var citation = new JSInlineCitation(citeproc);
			Console.WriteLine(citeproc.ToJSON(citation));

			Assert.NotNull(citation.CitationItems);
			Assert.NotNull(citation.Properties);
			Console.WriteLine(citeproc.ToJSON(citation));

			var citationItem = citation.CitationItems.AddNew();
			Console.WriteLine(citeproc.ToJSON(citation));

			citationItem.ID = "123";
			citationItem.Prefix = "bollox";
			Console.WriteLine(citeproc.ToJSON(citation));
		}