Пример #1
0
        /// <summary>
        /// exports bookmarks in gitmarks format
        /// </summary>
        /// <param name="bookmarksFile"></param>
        /// <param name="bookmarksDir"></param>
        public static void ExportBookmarks(string bookmarksFile, string bookmarksDir)
        {
            var bookmarks = JsonConvert.DeserializeObject <Bookmark[]>(File.ReadAllText(bookmarksFile)).AsEnumerable();

            using (var md5 = MD5.Create())
            {
                var result = Input.From(bookmarks).Apply(row => {
                    if (string.IsNullOrEmpty(row["LinkUrl"].ToString()))
                    {
                        return;
                    }

                    var id          = Utils.ComputeHash(row["LinkUrl"].ToString(), md5);
                    string fileName = Path.Combine(bookmarksDir, id);

                    var bookmark = new BookmarkContent
                    {
                        hash = id
                        ,
                        creator = "batch"
                        ,
                        rights = "CC BY"
                        ,
                        time = DateTime.Now.ToShortDateString()
                        ,
                        title = row["LinkText"].ToString()
                        ,
                        uri = row["LinkUrl"].ToString()
                    };
                    //dump bookmark
                    File.WriteAllText(fileName, JsonConvert.SerializeObject(bookmark));
                }).Execute();
            }
        }
Пример #2
0
        /// <summary>
        /// exports bookmarks in gitmarks format
        /// </summary>
        /// <param name="bookmarksFile"></param>
        /// <param name="bookmarksDir"></param>
        public static void ExportBookmarks(string bookmarksFile, string bookmarksDir)
        {
            var bookmarks = JsonConvert.DeserializeObject <Bookmark[]>(File.ReadAllText(bookmarksFile)).AsEnumerable();

            var result = Input.From(bookmarks).Apply(row => {
                string fileName = Path.Combine(bookmarksDir, row["Id"].ToString());

                var bookmark = new BookmarkContent
                {
                    hash = row["Id"].ToString()
                    ,
                    creator = "batch"
                    ,
                    rights = "CC BY"
                    ,
                    time = DateTime.Now.ToShortDateString()
                    ,
                    title = row["LinkText"].ToString()
                    ,
                    uri = row["LinkUrl"].ToString()
                };
                //dump bookmark
                File.WriteAllText(fileName, JsonConvert.SerializeObject(bookmark));
            }).Execute();
        }
Пример #3
0
        /// <summary>
        /// Fills the table bookmark
        /// </summary>
        /// <param name="mainDocPart">The main document part</param>
        /// <param name="firstBookmarkInTable">The first bookmark in the table</param>
        /// <param name="tableData">The table data</param>
        static void FillTableBookmark(MainDocumentPart mainDocPart, BookmarkContent bookmarkContent)
        {
            // find our bookmark
            var bookmark = mainDocPart.Document.Body.Descendants <BookmarkStart>().FirstOrDefault(b => b.Name == bookmarkContent.BookmarkContentKey);

            if (bookmark != null && bookmarkContent.BookmarkContentValue != null &&
                bookmarkContent.BookmarkContentValue is ListOfList <BookmarkContent> )
            {
                // get to first element
                OpenXmlElement elem = bookmark.Parent;

                // isolate the table to be worked on
                while (!(elem is Table))
                {
                    elem = elem.Parent;
                }
                OpenXmlElement targetTable = elem;

                // save the row you want to copy each time you have data
                TableRow oldRow      = elem.Elements <TableRow>().Last();
                TableRow rowTemplate = (TableRow)oldRow.Clone();

                // whack old row
                elem.RemoveChild(oldRow);

                // Time to slap our data into the table
                foreach (var item in bookmarkContent.BookmarkContentValue
                         as ListOfList <BookmarkContent> )
                {
                    TableRow newRow = (TableRow)rowTemplate.Clone();
                    IEnumerable <TableCell> cells = newRow.Elements <TableCell>();

                    for (int i = 0; i < cells.Count(); i++)
                    {
                        TableCell cell = cells.ElementAt(i);
                        FillBookmarkListOnTableCell(mainDocPart, cell.Descendants <BookmarkStart>().ToList(), item);
                    }

                    targetTable.AppendChild(newRow);
                }
            }
        }
Пример #4
0
 /// <summary>
 /// Fills bookmark list on table cell
 /// </summary>
 /// <param name="mainDocPart">The main document part</param>
 /// <param name="bookmarksOnCellList">The bookmark on cell list</param>
 /// <param name="bookmarkContentList">The bookmark content list</param>
 static void FillBookmarkListOnTableCell(MainDocumentPart mainDocPart, List <BookmarkStart> bookmarksOnCellList, List <BookmarkContent> bookmarkContentList)
 {
     if (bookmarksOnCellList != null && bookmarksOnCellList.Count > 0)
     {
         bookmarksOnCellList.ForEach(b =>
         {
             BookmarkContent content = bookmarkContentList.FirstOrDefault(c => c.BookmarkContentKey == b.Name);
             if (content != null)
             {
                 if (content.BookmarkContentType == BookmarkContentType.Html && !string.IsNullOrEmpty(content.BookmarkContentValue?.ToString()))
                 {
                     InsertHtmlContentIntoBookmark(mainDocPart, b, content.BookmarkContentValue.ToString());
                 }
                 else
                 {
                     InsertIntoBookmark(b, content.BookmarkContentValue?.ToString());
                 }
             }
         });
     }
 }
Пример #5
0
        /// <summary>
        /// Fill book mark
        /// </summary>
        /// <param name="mainDocPart">The main document part</param>
        /// <param name="bookmarkContent">The bookmark content</param>
        static void FillBookmark(MainDocumentPart mainDocPart, BookmarkContent bookmarkContent)
        {
            BookmarkStart bookmark = mainDocPart.Document.Body.Descendants <BookmarkStart>().FirstOrDefault(b => b.Name == bookmarkContent.BookmarkContentKey);

            if (bookmark != null)
            {
                switch (bookmarkContent.BookmarkContentType)
                {
                case BookmarkContentType.Text:
                    InsertIntoBookmark(bookmark, bookmarkContent.BookmarkContentValue?.ToString());
                    break;

                case BookmarkContentType.Html:
                    InsertHtmlContentIntoBookmark(mainDocPart, bookmark, bookmarkContent.BookmarkContentValue?.ToString());
                    break;

                case BookmarkContentType.Table:
                    FillTableBookmark(mainDocPart, bookmarkContent);
                    break;
                }
            }
        }