title
author
date
CreateTime
categories
win10 uwp Markdown
lindexi
2019-09-02 12:57:38 +0800
2018-2-13 17:23:3 +0800
Win10 UWP
需求分析
使用者可以輸入多級标題,包括一級标題,二級标題,以及其他标題。
輸入标題方式可以使用快捷鍵,也可以手動輸入“#”,一個“#” 表示一級标題,兩個個“#” 表示二級标題,三個“#” 表示三級标題,其他表示多級标題。
輸入快捷鍵要求判斷,目前使用者輸入點之前是否存在文字,如果存在,那麼輸入兩個回車後輸入“#”,如果使用者輸入點之前是“#”,那麼繼續輸入“#”,如果使用者輸入點之前是回車,那麼輸入“#”。
使用者可以使用快捷鍵或直接輸入“**重點内容**”加粗。
其中“**重點内容**”的内容是加粗,如果使用者輸入快捷鍵,那麼判斷使用者是否有選擇字元,如果存在使用者選中字元,那麼直接把“**重點内容**”中的 “重點内容”代換為使用者選中的字元。如果使用者不存在選中字元,那麼輸入“****”,把光标移動到中間。
使用者可以使用快捷鍵或直接輸入“*重點内容*”,其中“重點内容”是斜體。
如果使用者輸入快捷鍵,那麼判斷使用者是否有選擇字元,如果存在使用者選中字元,那麼直接把“*重點内容*”中的 “重點内容”代換為使用者選中的字元。如果使用者不存在選中字元,那麼輸入“**”,把光标移動到中間。
使用者可以使用快捷鍵或直接輸入“”,其中url為使用者輸入的圖檔URL。
使用者可以通過直接粘貼圖檔。如果使用者有選中字元,那麼在[]輸入使用者選中字元。
使用者可以通過拖入圖檔插入。
使用者可以使用快捷鍵或直接輸入“> ”,引用可以多級。
如果使用者輸入快捷鍵,那麼判斷使用者是否有選擇字元,如果存在使用者選中字元,那麼在選中字元之前輸入“> ”。
判斷使用者插入之前一字元是不是回車,如果是回車,那麼直接輸入“> ”。如果不是,輸入兩個回車,輸入“> ”。
使用者可以使用快捷鍵或直接輸入“< !-- bm -->”。
書簽可以讓使用者直接跳到書簽。
使用者可以通過直接輸入或快捷鍵輸入清單,其中包括有序清單和無序清單。
使用者可以通過直接輸入或快捷鍵輸入有序清單 “ 1. 清單内容”
如果使用者輸入快捷鍵,那麼判斷使用者是否有選擇字元,如果存在使用者選中字元,那麼在選中字元之前輸入“ 1. ”。
判斷使用者插入之前一字元是不是回車,如果是回車,那麼直接輸入“ 1. ”。如果不是,輸入兩個回車,輸入“ 1. ”。
使用者可以通過直接輸入或快捷鍵輸入有序清單 “ - 清單内容”
如果使用者輸入快捷鍵,那麼判斷使用者是否有選擇字元,如果存在使用者選中字元,那麼在選中字元之前輸入“ - ”。
判斷使用者插入之前一字元是不是回車,如果是回車,那麼直接輸入“ - ”。如果不是,輸入兩個回車,輸入“ - ”。
有序清單可以多級,依靠“- ”前的空格。
使用者可以使用快捷鍵或直接輸入“[](url),其中url為使用者輸入的URL。
如果使用者有選中字元,那麼在[]輸入使用者選中字元。
使用者可以使用快捷鍵或直接輸入“``”,輸入代碼。如果使用者需要輸入多行代碼,可以輸入 “``` 回車 ```”。
如果使用者使用快捷鍵,判斷使用者是否存在選中字元,如果存在,在代碼中輸入使用者選中字元。
判斷使用者插入之前一字元是不是回車,如果是回車,那麼直接輸入“``` 回車 ```”,把光标移動到中間。如果不是回車,輸入“``”。
使用者可以使用快捷鍵或直接輸入“$$”,如果要輸入多行公式,輸入“$$ 回車 $$”。
如果使用者使用快捷鍵,判斷使用者是否存在選中字元,如果存在,在公式中輸入使用者選中字元。
如果使用者插入之前一字元是回車,那麼輸入“$$ 回車 $$”,如果不是,輸入“$$”,把光标移到中間。
如果使用者粘貼的是圖檔,軟體可以識别多種圖檔,如果使用者有選擇圖檔需要水印,那麼處理圖檔。
圖檔如果過大,軟體可以壓縮圖檔。
軟體自動把圖檔上傳到雲,使用者可自己選擇多個雲。包括 九幽、七牛雲,sm.ms,ituku.tk,建立雲。
使用者可以使用自己的雲。
軟體背景上傳雲,使用者插入圖檔時,先把圖檔放到資源檔案夾,然後上傳。儲存到資源檔案夾的圖檔名為時間+随機數。
插入時,輸入“<! -- GUID -->”,上傳完成,自動把輸入代換“<! -- 本地 -->”。
文章可以通過直接粘貼圖檔,插入。
插入的圖檔先放到本地,如果粘貼的内容是檔案,那麼直接複制檔案到文章同目錄的檔案夾,文章的檔案夾名稱和文章一樣。複制進去需要修改檔案名稱為源檔案名稱+日期+随機數。如果粘貼的内容是圖檔,那麼把圖檔轉換為檔案,同樣放到檔案夾,檔案名為日期+随機數。
在文本,插入圖檔格式為< !--圖檔-->,一開始的URL是圖檔的本地路徑位置,然後注釋的圖檔是ID,其中ID是随機生成,作用在上傳圖檔完成代換。輸入背景上傳代碼為(本地檔案)< !--圖檔-->和圖檔檔案。根據圖檔檔案上傳完成,代換(URL)< !--本地檔案-->。如果URL不可用,可以重新上傳。重新上傳的代碼是(URL)< !--本地檔案-->,根據本地檔案擷取檔案,然後上傳,代換URL。
如果使用者粘貼網站,自動輸入“[url](url)”。
使用者粘貼檔案,自動使用圖檔處理,如果不是圖檔,那麼直接放到本地資源,如果圖檔過大,不上傳到雲。
輸入“[檔案名](檔案)”
使用者可以使用快捷鍵“ctrl+c”複制,如果使用者存在選中字元,複制選中字元。如果使用者不存在選中字元,複制一行。
使用者可以點選撤銷按鈕或快捷鍵撤銷,撤銷儲存使用者本次打開所有修改。使用者可以取消撤銷。
撤銷時,自動把光标移動到撤銷文本。
使用者可以建立、删除、重命名檔案。
使用者可以導入檔案。
使用者在輸入建立檔案标題後建立檔案。檔案名為使用者輸入的标題,去掉不能做檔案名的字元。如果存在相同的檔案名,那麼加随機數。
如果使用者選擇Jekyll,那麼自動在輸入檔案名加上日期。
建立檔案預設添加“# 标題”然後加上回車
建立檔案夾和檔案名相同,檔案的所有資源放在檔案夾。
如果檔案夾名重複,那麼不需對檔案夾建立。
如果導入檔案格式錯誤,自動顯示檔案,添加格式。
開始是頭部,頭部可以是統一的文字,文字提供可代換值。
然後是部落格資訊
部落格資訊有部落格标題,建立日期,修改日期,标簽,作者,文章和作者和建立時間、修改時間的md5
注意冒号是英文的冒号,标簽用分行或逗号隔開
接着簡介,文章簡介
然後是文章内容
文章内容完成就是文章最後文本,文章最後文本也是統一的文字,所有文章都一樣,文字提供可代換值。
總的文章看起來就是
使用者可以直接修改文章标題。
在建立檔案,自動添加文章的建立時間。
給使用者看的不存在上面的,隻有部落格标題,顯示的是“# 部落格标題”
類型
字段
StorageFile
File 檔案
String
Title 标題
DateTime
CreateTime 建立時間
Time 修改時間
Md5 文章和作者和建立時間、修改時間的md5
String[]
category 标簽
Author 作者
Excerpt 摘要,去掉HTML
Content 内容
References 最後文字
Catalog 目錄
Bm 書簽
在使用者停止輸入或輸入時間超過使用者設定自動儲存時間,自動儲存。
自動儲存時鎖住檔案
使用者可以點選儲存或使用快捷鍵。
使用者儲存後,重新設定自動儲存。
如果使用者在其他軟體修改檔案,自動對比Git得到修改,詢問使用者是否使用外部修改。
儲存的檔案格式為上檔案格式,自動填寫修改日期,自動添加作者,添加末尾文字,計算Md5。
儲存為UTf-8。
使用者可以設定界面顯示 字型大小、字型顔色、背景顔色。使用者可以設定背景為圖檔,使用者可以設定圖檔透明度。
使用者可以儲存設定為本倉庫,可以儲存全局。
使用者可以設定是否顯示行号。
使用者可以設定是否可以折疊。
使用者可以設定是否顯示多标簽。
使用者可以設定是否自動儲存。
使用者可以設定自動儲存時間。
使用者可以設定是否上傳遠端Git。
使用者可以設定遠端Git位址。
使用者可以設定遠端Git賬号、密碼、密鑰。
使用者可以設定是否自動顯示Html内容。
使用者可以設定顯示界面設定欄。
使用者可以設定是否自動背景更新。
使用者可以設定是否可以安裝第三方插件。
使用者可以設定是否儲存自動上傳遠端。
使用者可以設定是否自動備份。
使用者可以設定所有倉庫的檔案開頭字元和結尾字元、作者。 設定開頭字元可以是倉庫的檔案,自動把整個檔案放到開頭位置。
使用者可以設定Git送出資訊。 Git送出資訊可以自動代換,提供 {Time} 目前時間。{Author} 作者。{Title} 标題。 如果存在多個檔案,那麼直接有多個标題。
使用者可以設定圖檔是否需要水印。
使用者可以設定圖檔水印。
使用者可以設定圖檔上傳雲。
使用者可以設定圖檔上傳雲賬号。
使用者可以設定圖檔壓縮。
使用者可以設定快捷鍵,可以自動對于快捷鍵。
快捷鍵可以儲存設定為本倉庫,可以儲存全局。
快捷鍵設定為文本,使用者可以自定義。
代碼片設定為倉庫,存在Snippet檔案夾,字尾為.snippet
輸出後的效果
Markdown
快捷鍵
Bold
**text**
Ctrl/⌘ + B
Emphasize
*text*
Ctrl/⌘ + I
Strike-through
~~text~~
Ctrl + Alt + U
Link
[title](http://)
Ctrl/⌘ + K
Inline Code
`code`
Ctrl/⌘ + Shift + K
Image

Ctrl/⌘ + Shift + I
List
* item
Ctrl + L
Blockquote
> quote
Ctrl + Q
H1
# Heading
H2
## Heading
Ctrl/⌘ + H
H3
### Heading
Ctrl/⌘ + H (x2)
使用者可以設定代碼片,代碼片為使用者輸入字元後,按Tab顯示的一段代碼。
使用者可以自設定,代碼片的内容,添加代碼片。
代碼片格式
代碼片可以設定為本倉庫,可以儲存全局。
使用者可以設定代碼片,如果代碼片不可用,提示使用者。
打開軟體進入倉庫,自動檢測是否倉庫存在。
使用者選擇建立或進入倉庫。
倉庫背景讀取檔案,顯示RingProgress。
讀取檔案和設定完,顯示Read檔案。
如果使用者建立倉庫,可以設定:
倉庫名,倉庫名不能為空。
倉庫作者,如果沒有設定,為全局作者。
遠端Git,使用者可以選擇設定Git倉,可以設定多個,可以設定分支。
倉庫圖檔,使用者可以設定倉庫圖檔,倉庫圖檔存在image.png。
是以的操作都不可在UI線程。
使用者輸入到響應時間為100ms 最多。
背景自動把檔案轉為HTML顯示,如果使用者設定實時顯示。
如果使用者沒有設定實時顯示,可以通過按鍵後生成。
背景上傳圖檔,上傳完成通知界面。
背景儲存。
使用标題和代碼、圖檔等,高亮。
使用者可以設定不同的高亮。
自動修改标題字型大小。
代碼可以根據代碼高亮。
C# 代碼
java 代碼
如果界面小,那麼顯示少的菜單,顯示菜單可以使用者自定義。
使用者可以設定菜單的快捷鍵。
使用者可以點選目錄按鈕或快捷鍵打開檔案目錄,在使用者輸入标題後,自動添加目錄。
顯示的目錄可以有多級。
使用者點選目錄可以跳到标題的所在。
使用者可以查找文本是否存在打開的檔案或整個倉庫。
使用者可以查找倉庫的檔案是否存在輸入的檔案名。
使用者可以查找倉庫的檔案是否存在輸入的标題。
使用者可以通過設定是否大小寫,設定正則查找。
查找得到可以通過點選直接顯示對應檔案。
使用者可以替換打開的檔案内容,使用者可以替換倉庫所有檔案内容,使用者可以使用正則得到可以替換内容。
替換完成報告替換處。
使用者可以通過快捷鍵選中,使用者選擇可以從字到句子。
使用者可以用快捷鍵全選,可以點選菜單全選。
使用者可以通過分享按鈕,把文本分享。
分享可以分享QQ空間、微網誌、Github、分享應用。
分享内容可以是檔案,可以是Html、pdf。
使用者可以通過分享按鈕,分享倉庫,可以分享倉庫檔案,可以分享倉庫做出Html、pdf。
使用者背景分享,如果分享Html或pdf,背景生成。
使用者可以折疊代碼和标題對于的文本。
使用者可以展開折疊代碼。
使用者可以使用拼寫檢查,自動檢測使用者輸入,并提示使用者可以使用的輸入。
拼寫檢查支援英文和漢字,使用者可以添加自定義詞語到詞庫。
使用者可以重新傳圖檔到雲。
使用者可以選擇整個檔案夾的檔案,把檔案的圖檔上傳到雲。
自動顯示雲空間剩餘,提醒使用者不足。
使用者可以使用私有賬号,可以使用公有賬号,提供公有賬号讓使用者購買
雲提供CDN加速,可以讓使用者購買。
上傳檔案,如果使用私有雲,自動建立檔案夾,在上傳字尾添加使用者辨別。
如果使用公有雲,在檔案字尾自動添加使用者辨別。
如果雲不支援類型上傳,尋找另一個雲,把使用者檔案上傳。如果所有雲不支援,放本地。
如果使用者設定實時,那麼在使用者更改檔案,自動轉換為Html,顯示。
如果使用者沒設定實時,在使用者點選顯示,背景轉換。
當使用者分享時,自動轉換分享。
轉換的Html可以使用使用者模闆,使用者可以設定全局模闆,可以設定倉庫模闆,設定放在layout檔案夾。
使用者可以設定轉換規則。
描述
過濾器 和 輸出
日期轉化為 XML 模式
将日期轉化為 XML 模式 (ISO 8601) 的格式。
{ { site.time | date_to_xmlschema } }
2008-11-17T13:07:54-08:00
日期轉化為 RFC-822 格式
将日期轉化為 RFC-822 格式,用于 RSS 訂閱。
{ { site.time | date_to_rfc822 } }
Mon, 17 Nov 2008 13:07:54 -0800
日期轉化為短格式
将日期轉化為短格式。
{ { site.time | date_to_string } }
17 Nov 2008
日期轉化為長格式
将日期轉化為長格式。
{ { site.time | date_to_long_string } }
17 November 2008
檢索
選取鍵值對應的所有對象,傳回一個數組。
{ { site.members | where:"graduation_year","2014" } }
判斷
選取表達式正确的所有對象,傳回一個數組。
{ { site.members | where_exp:"item", "item.graduation_year == 2014" } } { { site.members | where_exp:"item", "item.graduation_year < 2014" } } { { site.members | where_exp:"item", "item.projects contains 'foo'" } }
分組
根據所給屬性将對象分組,傳回一個數組。
{ { site.members | group_by:"graduation_year" } }
[{"name"=>"2013", "items"=>[...]},
{"name"=>"2014", "items"=>[...]}]
XML 轉碼
對一些字元串轉碼,已友善顯示在 XML 。
{ { page.content | xml_escape } }
CGI 轉碼
CGI 轉碼,用于 URL 中,将所有的特殊字元轉化為 %XX 的形式。
{ { “foo,bar;baz?” | cgi_escape } }
foo%2Cbar%3Bbaz%3F
URI 轉碼
URI 轉碼。
{ { “'foo, bar \\baz?'” | uri_escape } }
foo,%20bar%20%5Cbaz?
統計字數
統計文章中的字數。
{ { page.content | number_of_words } }
1337
數組轉換為句子
将數組轉換為句子,列舉标簽時尤其有用。
{ { page.tags | array_to_sentence_string } }
foo, bar, and baz
Markdown 支援
将 Markdown 格式的字元串轉換為 HTML 。
{ { page.excerpt | markdownify } }
Sass / SCSS 轉換
将 Sass / SCSS 格式的字元串轉換為 CSS
{ { some_scss | scssify } }
{ { some_sass | sassify } }
Slugify
将字元串轉換為小寫字母 URL “slug”。詳見下面的參數。
{ { "The _config.yml file" | slugify } }
the-config-yml-file
{ { "The _config.yml file" | slugify: 'pretty' } }
the-_config.yml-file
JSON 轉換
将 Hash / 數組 格式的字元串轉換為 JSON
{ { site.data.projects | jsonify } }
排序
對數組排序,可選參數為:1.排序屬性;2.順序(正序或倒序)
{ { page.tags | sort } }
{ { site.posts | sort: 'author' } }
{ { site.pages | sort: 'title', 'last' } }
樣本
從數組中選取一個随意值。可選參數為:選取個數
{ { site.pages | sample } }
{ { site.pages | sample:2 } }
數組篩選
從一個數組中 Push, pop, shift, and unshift 元素。
這些指令對原數組是無影響的。它們不會改變數組本身,而是建立副本後,對副本進行操作。
{ { page.tags | push: 'Spokane' } }
['Seattle', 'Tacoma', 'Spokane']
{ { page.tags | pop } }
['Seattle']
{ { page.tags | shift } }
['Tacoma']
{ { page.tags | unshift: "Olympia" } }
['Olympia', 'Seattle', 'Tacoma']
Inspect
将對象轉換為其字元串表示形式,用于調試
{ { some_var | inspect } }
自動在html 寫檔案md5,如果檔案md5沒修改,不轉換。