Docear4Word.CiteProcRunner.CreateJSInlineCitationItem C# (CSharp) Method

CreateJSInlineCitationItem() public method

public CreateJSInlineCitationItem ( Docear4Word.EntryAndPagePair itemSource ) : Docear4Word.JSInlineCitationItem
itemSource Docear4Word.EntryAndPagePair
return Docear4Word.JSInlineCitationItem
        public JSInlineCitationItem CreateJSInlineCitationItem(EntryAndPagePair itemSource)
        {
            return new JSInlineCitationItem(this)
                   	{
                   		ID = itemSource.Entry.Name, // Note no '#'!!
                   		Locator = itemSource.PageNumberOverride,
                        AuthorOnly = itemSource.AuthorProcessorControl == AuthorProcessorControl.AuthorOnly ? (object) 1 : null,
                        SuppressAuthor = itemSource.AuthorProcessorControl == AuthorProcessorControl.SuppressAuthor ? (object) 1 : null,
                   		ItemData = FetchOrCreateJSRawCitationItem(itemSource.ID)
                   	};
        }

Usage Example

コード例 #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);
        }