コード例 #1
0
ファイル: BibtexEntry.cs プロジェクト: peterdn/NETRef
        public BibtexEntry(string id, BibtexEntryType type)
        {
            if (id == null)
            {
            throw new NullReferenceException("Every BibtexEntry must have an ID");
            }

            _id = id;
            setType(type);
        }
コード例 #2
0
ファイル: BibtexEntry.cs プロジェクト: peterdn/NETRef
 /**
  * Prompts the entry to call BibtexEntryType.getType(string) with
  * its current type name as argument, and sets its type according
  * to what is returned. This method is called when a user changes
  * the type customization, to make sure all entries are set with
  * current types.
  * @return true if the entry could find a type, false if not (in
  * this case the type will have been set to
  * BibtexEntryType.TYPELESS).
  */
 public bool updateType()
 {
     BibtexEntryType newType = BibtexEntryType.getType(_type.getName());
     if (newType != null) {
     _type = newType;
     return true;
     }
     _type = BibtexEntryType.TYPELESS.Instance;
     return false;
 }
コード例 #3
0
ファイル: MainWnd.cs プロジェクト: jmobi/BibTex2eCitation
        private void AddBibTeXEntry(BibtexEntry entry)
        {
            string title    = entry.getField("title");
            string subtitle = "";
            string author   = entry.getField("author");
            string editor   = entry.getField("editor");

            title  = TrimEntry(title);
            author = TrimEntry(author);
            editor = TrimEntry(editor);

            if (author == null)
            {
                Console.WriteLine("Warning: empty author field in entry {0}", entry.getId());
                author = "";
            }

            if (editor == null)
            {
                Console.WriteLine("Warning: empty editor field in entry {0}", entry.getId());
                editor = "";
            }

            string[] authors    = author.Split(new string[] { " and ", "," }, StringSplitOptions.RemoveEmptyEntries);
            string   new_author = "";

            foreach (string a in authors)
            {
                if (a.Length > 0 && new_author != "")
                {
                    new_author = new_author + ";" + TrimEntry(a);
                }
                else if (a.Length > 0)
                {
                    new_author = TrimEntry(a);
                }
            }

            if (editor == "")
            {
                editor = new_author;
            }
            if (new_author == "")
            {
                new_author = editor;
            }

            string booktitle            = entry.getField("booktitle");
            string edition              = entry.getField("edition");
            string isbn                 = entry.getField("isbn");
            string journalorseriestitle = entry.getType() == BibtexEntryType.getType("ARTICLE") ? entry.getField("journal") : entry.getField("series");
            string volume               = entry.getField("volume");
            string issue                = entry.getField("issue");
            string pages                = entry.getField("pages");
            string startpage            = "";
            string endpage              = "";

            if (pages != null)
            {
                string[] splittedPages = pages.Split(new string[] { "-", "--" }, StringSplitOptions.RemoveEmptyEntries);
                if (splittedPages.Length > 0)
                {
                    startpage = splittedPages[0].Trim();
                }
                if (splittedPages.Length > 1)
                {
                    endpage = splittedPages[1].Trim();
                }
            }


            string issn            = entry.getField("issn");
            string publisher       = entry.getField("publisher");
            string publicationdate = entry.getField("year");
            string abstract_txt    = entry.getField("abstract");
            string doi             = entry.getField("doi");
            string fulltexturl     = entry.getField("url");
            string notes           = entry.getField("notes");
            string publicationtype = "";
            string orgcode         = BibTex2eCitation.Properties.Settings.Default.DefaultOrgCode.ToString();

            if (entry.getType() == BibtexEntryType.getType("ARTICLE"))
            {
                publicationtype = "Journal Items";
            }
            else if (entry.getType() == BibtexEntryType.getType("BOOK"))
            {
                publicationtype = "Monographs/ Monograph Items";
            }
            else if (entry.getType() == BibtexEntryType.getType("PHDTHESIS"))
            {
                publicationtype = "Doctoral Thesis and Habilitation";
            }
            else if (entry.getType() == BibtexEntryType.getType("MASTERSTHESIS"))
            {
                publicationtype = "Master Thesis and Bachelor Thesis";
            }
            else if (entry.getType() == BibtexEntryType.getType("INPROCEEDINGS"))
            {
                publicationtype = "Conference Contributions";
            }
            string language = "English";

            dataGridView1.Rows.Add(new string[] { title, new_author, publicationdate, editor, publicationtype, "", orgcode, subtitle, booktitle, edition, "", "", isbn, journalorseriestitle, volume, issue, startpage, endpage, issn, publisher, "", "", abstract_txt, doi, fulltexturl, "", "", "", notes, "", language });
        }
コード例 #4
0
ファイル: BibtexEntry.cs プロジェクト: peterdn/NETRef
        /**
         * Sets this entry's type.
         */
        public void setType(BibtexEntryType type)
        {
            if (type == null)
            {
            throw new NullReferenceException(
                "Every BibtexEntry must have a type.  Instead of null, use type OTHER");
            }

            _type = type;
        }
コード例 #5
0
ファイル: BibtexParser.cs プロジェクト: peterdn/NETRef
        public BibtexEntry ParseEntry(BibtexEntryType tp)
        {
            string id = Util.createNeutralId();// createId(tp, _db);
            BibtexEntry result = new BibtexEntry(id, tp);
            SkipWhitespace();
            Consume('{', '(');
            SkipWhitespace();
            int c = Peek();
            if ((c != '\n') && (c != '\r'))
            SkipWhitespace();
            string key = null;
            bool doAgain = true;
            while (doAgain) {
            doAgain = false;
            try {
                if (key != null)
                    key = key + ParseKey();// parseTextToken(),
                else
                    key = ParseKey();
            } catch (NoLabelException ex) {
                // This exception will be thrown if the entry lacks a key
                // altogether, like in "@article{ author = { ...".
                // It will also be thrown if a key Contains =.
                c = (char) Peek();
                if (char.IsWhiteSpace((char)c) || (c == '{') || (c == '\"')) {
                    string fieldName = ex.Message.Trim().ToLower();
                    string cont = ParseFieldContent(fieldName);
                    result.setField(fieldName, cont);
                } else {
                    if (key != null)
                        key = key + ex.Message + "=";
                    else
                        key = ex.Message + "=";
                    doAgain = true;
                }
            }
            }

            if ((key != null) && key.Equals(""))
            key = null;

            result.setField(Globals.KEY_FIELD, key);
            SkipWhitespace();

            while (true) {
            c = Peek();
            if ((c == '}') || (c == ')')) {
                break;
            }

            if (c == ',')
                Consume(',');

            SkipWhitespace();

            c = Peek();
            if ((c == '}') || (c == ')')) {
                break;
            }
            ParseField(result);
            }

            Consume('}', ')');
            return result;
        }