win10 uwp Markdown 輸入需求文件文件格式文件類保存設置界面拼寫檢查雲創建Html創建pdfGit

需求分析

輸入需求

用戶可以輸入標題

用戶可以輸入多級標題,包括一級標題,二級標題,以及其他標題。

輸入標題方式可以使用快捷鍵,也可以手動輸入“#”,一個“#” 表示一級標題,兩個個“#” 表示二級標題,三個“#” 表示三級標題,其他表示多級標題。

輸入快捷鍵要求判斷,當前用戶輸入點之前是否存在文字,如果存在,那麼輸入兩個回車後輸入“#”,如果用戶輸入點之前是“#”,那麼繼續輸入“#”,如果用戶輸入點之前是回車,那麼輸入“#”。

用戶可以輸入加粗

用戶可以使用快捷鍵或直接輸入“**重點內容**”加粗。

其中“**重點內容**”的內容是加粗,如果用戶輸入快捷鍵,那麼判斷用戶是否有選擇字符,如果存在用戶選中字符,那麼直接把“**重點內容**”中的 “重點內容”代換爲用戶選中的字符。如果用戶不存在選中字符,那麼輸入“****”,把光標移動到中間。

用戶可以輸入斜體

用戶可以使用快捷鍵或直接輸入“*重點內容*”,其中“重點內容”是斜體。

如果用戶輸入快捷鍵,那麼判斷用戶是否有選擇字符,如果存在用戶選中字符,那麼直接把“*重點內容*”中的 “重點內容”代換爲用戶選中的字符。如果用戶不存在選中字符,那麼輸入“**”,把光標移動到中間。

用戶可以輸入 圖片

用戶可以使用快捷鍵或直接輸入“![](url)”,其中url爲用戶輸入的圖片URL。

用戶可以通過直接粘貼圖片。如果用戶有選中字符,那麼在[]輸入用戶選中字符。

用戶可以通過拖入圖片插入。

用戶可以輸入 引用

用戶可以使用快捷鍵或直接輸入“> ”,引用可以多級。

如果用戶輸入快捷鍵,那麼判斷用戶是否有選擇字符,如果存在用戶選中字符,那麼在選中字符之前輸入“> ”。

判斷用戶插入之前一字符是不是回車,如果是回車,那麼直接輸入“> ”。如果不是,輸入兩個回車,輸入“> ”。

用戶可以輸入 書籤

用戶可以使用快捷鍵或直接輸入“< !-- bm -->”。

書籤可以讓用戶直接跳到書籤。

用戶可以輸入 列表

用戶可以通過直接輸入或快捷鍵輸入列表,其中包括有序列表和無序列表。

有序列表

用戶可以通過直接輸入或快捷鍵輸入有序列表 “ 1. 列表內容

如果用戶輸入快捷鍵,那麼判斷用戶是否有選擇字符,如果存在用戶選中字符,那麼在選中字符之前輸入“ 1. ”。

判斷用戶插入之前一字符是不是回車,如果是回車,那麼直接輸入“ 1. ”。如果不是,輸入兩個回車,輸入“ 1. ”。

無序列表

用戶可以通過直接輸入或快捷鍵輸入有序列表 “ - 列表內容

如果用戶輸入快捷鍵,那麼判斷用戶是否有選擇字符,如果存在用戶選中字符,那麼在選中字符之前輸入“ - ”。

判斷用戶插入之前一字符是不是回車,如果是回車,那麼直接輸入“ - ”。如果不是,輸入兩個回車,輸入“ - ”。

有序列表可以多級,依靠“- ”前的空格。

用戶可以輸入 超鏈接

用戶可以使用快捷鍵或直接輸入“[](url),其中url爲用戶輸入的URL。

如果用戶有選中字符,那麼在[]輸入用戶選中字符。

用戶可以輸入 代碼

用戶可以使用快捷鍵或直接輸入“``”,輸入代碼。如果用戶需要輸入多行代碼,可以輸入 “``` 回車 ```”。

如果用戶使用快捷鍵,判斷用戶是否存在選中字符,如果存在,在代碼中輸入用戶選中字符。

判斷用戶插入之前一字符是不是回車,如果是回車,那麼直接輸入“``` 回車 ```”,把光標移動到中間。如果不是回車,輸入“``”。

用戶可以輸入 公式

用戶可以使用快捷鍵或直接輸入“$$”,如果要輸入多行公式,輸入“$$ 回車 $$”。

如果用戶使用快捷鍵,判斷用戶是否存在選中字符,如果存在,在公式中輸入用戶選中字符。

如果用戶插入之前一字符是回車,那麼輸入“$$ 回車 $$”,如果不是,輸入“$$”,把光標移到中間。

粘貼

圖片

如果用戶粘貼的是圖片,軟件可以識別多種圖片,如果用戶有選擇圖片需要水印,那麼處理圖片。

圖片如果過大,軟件可以壓縮圖片。

軟件自動把圖片上傳到雲,用戶可自己選擇多個雲。包括 九幽、七牛雲,sm.ms,ituku.tk,建立雲。

用戶可以使用自己的雲。

軟件後臺上傳雲,用戶插入圖片時,先把圖片放到資源文件夾,然後上傳。保存到資源文件夾的圖片名爲時間+隨機數。

插入時,輸入“![](本地圖片)<! -- GUID -->”,上傳完成,自動把輸入代換“![](url)<! -- 本地 -->”。

文章可以通過直接粘貼圖片,插入。

插入的圖片先放到本地,如果粘貼的內容是文件,那麼直接複製文件到文章同目錄的文件夾,文章的文件夾名稱和文章一樣。複製進去需要修改文件名稱爲源文件名稱+日期+隨機數。如果粘貼的內容是圖片,那麼把圖片轉換爲文件,同樣放到文件夾,文件名爲日期+隨機數。

在文本,插入圖片格式爲![圖片描述](url)< !--圖片-->,一開始的URL是圖片的本地路徑位置,然後註釋的圖片ID,其中ID是隨機生成,作用在上傳圖片完成代換。輸入後臺上傳代碼爲(本地文件)< !--圖片-->和圖片文件。根據圖片文件上傳完成,代換(URL)< !--本地文件-->。如果URL不可用,可以重新上傳。重新上傳的代碼是(URL)< !--本地文件-->,根據本地文件獲取文件,然後上傳,代換URL。

網站

如果用戶粘貼網站,自動輸入“[url](url)”。

文件

用戶粘貼文件,自動使用圖片處理,如果不是圖片,那麼直接放到本地資源,如果圖片過大,不上傳到雲。

輸入“[文件名](文件)

複製

用戶可以使用快捷鍵“ctrl+c”複製,如果用戶存在選中字符,複製選中字符。如果用戶不存在選中字符,複製一行。

撤銷

用戶可以點擊撤銷按鈕或快捷鍵撤銷,撤銷保存用戶本次打開所有修改。用戶可以取消撤銷。

撤銷時,自動把光標移動到撤銷文本。

文件

用戶可以新建、刪除、重命名文件。

用戶可以導入文件。

新建

用戶在輸入新建文件標題後新建文件。文件名爲用戶輸入的標題,去掉不能做文件名的字符。如果存在相同的文件名,那麼加隨機數。

如果用戶選擇Jekyll,那麼自動在輸入文件名加上日期。

新建文件默認添加“# 標題”然後加上回車

創建文件夾和文件名相同,文件的所有資源放在文件夾。

如果文件夾名重複,那麼不需對文件夾創建。

導入文件

如果導入文件格式錯誤,自動顯示文件,添加格式。

文件格式

開始是頭部,頭部可以是統一的文字,文字提供可代換值。

<! -- head -- >
頭部信息
<! -- head -- >

然後是博客信息

博客信息有博客標題,創建日期,修改日期,標籤,作者,文章和作者和創建時間、修改時間的md5

< !--blog-->
博客標題:

創建日期:

修改日期:

標籤:

作者:

文章和作者和創建時間、修改時間的md5:

< !--blog-->

注意冒號是英文的冒號,標籤用分行或逗號隔開

接着簡介,文章簡介

< !--summary-->

< !--summary-->

然後是文章內容

文章內容完成就是文章最後文本,文章最後文本也是統一的文字,所有文章都一樣,文字提供可代換值。

總的文章看起來就是

< !--head-->
頭部信息
< !--head-->

< !--blog-->
博客標題:
創建日期:
修改日期:
標籤:
作者:
文章和作者和創建時間、修改時間的md5:
< !--blog-->

< !--summary-->

< !--summary-->

文章內容

文章最後文本

用戶可以直接修改文章標題。

在創建文件,自動添加文章的創建時間。

給用戶看的不存在上面的,只有博客標題,顯示的是“# 博客標題”

文件類

類型

字段

StorageFile

File 文件

String

Title 標題

DateTime

CreateTime 創建時間

DateTime

Time 修改時間

String

Md5 文章和作者和創建時間、修改時間的md5

String[]

category 標籤

String

Author 作者

String

Excerpt 摘要,去掉HTML

String

Content 內容

String

References 最後文字

String

Catalog 目錄

String

Bm 書籤

保存

自動保存

在用戶停止輸入或輸入時間超過用戶設置自動保存時間,自動保存。

自動保存時鎖住文件

用戶保存

用戶可以點擊保存或使用快捷鍵。

用戶保存後,重新設置自動保存。

如果用戶在其他軟件修改文件,自動對比Git得到修改,詢問用戶是否使用外部修改。

編碼

保存的文件格式爲上文件格式,自動填寫修改日期,自動添加作者,添加末尾文字,計算Md5。

保存爲UTf-8。

設置

設置界面

  1. 用戶可以設置界面顯示 字體大小、字體顏色、背景顏色。用戶可以設置背景爲圖片,用戶可以設置圖片透明度。
  2. 用戶可以保存設置爲本倉庫,可以保存全局。
  3. 用戶可以設置是否顯示行號。
  4. 用戶可以設置是否可以摺疊。
  5. 用戶可以設置是否顯示多標籤。
  6. 用戶可以設置是否自動保存。
  7. 用戶可以設置自動保存時間。
  8. 用戶可以設置是否上傳遠程Git。
  9. 用戶可以設置遠程Git地址。
  10. 用戶可以設置遠程Git賬號、密碼、密鑰。
  11. 用戶可以設置是否自動顯示Html內容。
  12. 用戶可以設置顯示界面設置欄。
  13. 用戶可以設置是否自動後臺更新。
  14. 用戶可以設置是否可以安裝第三方插件。
  15. 用戶可以設置是否保存自動上傳遠程。
  16. 用戶可以設置是否自動備份。
  17. 用戶可以設置所有倉庫的文件開頭字符和結尾字符、作者。 設置開頭字符可以是倉庫的文件,自動把整個文件放到開頭位置。
  18. 用戶可以設置Git提交信息。 Git提交信息可以自動代換,提供 {Time} 當前時間。{Author} 作者。{Title} 標題。 如果存在多個文件,那麼直接有多個標題。
  19. 用戶可以設置圖片是否需要水印。
  20. 用戶可以設置圖片水印。
  21. 用戶可以設置圖片上傳雲。
  22. 用戶可以設置圖片上傳雲賬號。
  23. 用戶可以設置圖片壓縮。

快捷鍵

用戶可以設置快捷鍵,可以自動對於快捷鍵。

快捷鍵可以保存設置爲本倉庫,可以保存全局。

快捷鍵設置爲文本,用戶可以自定義。

代碼片設置爲倉庫,存在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

![alt](http://)

Ctrl/⌘ + Shift + I

List

* item

Ctrl + L

Blockquote

> quote

Ctrl + Q

H1

# Heading

H2

## Heading

Ctrl/⌘ + H

H3

### Heading

Ctrl/⌘ + H (x2)

代碼片

用戶可以設置代碼片,代碼片爲用戶輸入字符後,按Tab顯示的一段代碼。

用戶可以自設置,代碼片的內容,添加代碼片。

代碼片格式

< snippet>
	< content >< ! [CDATA[ 
   輸入顯示的代碼,其中可以用{1}代表第一次光標位置,並可以設置變量,如{1:this},所以設置爲{1:this}的代碼片會代換爲輸入的字符。
]]>< /content>
	< tabTrigger>輸入字符,按Tab輸入代碼片< /tabTrigger>
< /snippet>

代碼片可以設置爲本倉庫,可以保存全局。

代碼片設置爲倉庫,存在Snippet文件夾,後綴爲.snippet

用戶可以設置代碼片,如果代碼片不可用,提示用戶。

界面

打開軟件進入倉庫,自動檢測是否倉庫存在。

用戶選擇新建或進入倉庫。

倉庫後臺讀取文件,顯示RingProgress。

讀取文件和設置完,顯示Read文件。

如果用戶新建倉庫,可以設置:

倉庫名,倉庫名不能爲空。

倉庫作者,如果沒有設置,爲全局作者。

遠程Git,用戶可以選擇設置Git倉,可以設置多個,可以設置分支。

倉庫圖片,用戶可以設置倉庫圖片,倉庫圖片存在image.png。

流暢

所以的操作都不可在UI線程。

用戶輸入到響應時間爲100ms 最多。

後臺自動把文件轉爲HTML顯示,如果用戶設置實時顯示。

如果用戶沒有設置實時顯示,可以通過按鍵後生成。

後臺上傳圖片,上傳完成通知界面。

後臺保存。

高亮

使用標題和代碼、圖片等,高亮。

用戶可以設置不同的高亮。

自動修改標題字體大小。

代碼可以根據代碼高亮。

  • C# 代碼
  • java 代碼

菜單

如果界面小,那麼顯示少的菜單,顯示菜單可以用戶自定義。

用戶可以設置菜單的快捷鍵。

目錄

用戶可以點擊目錄按鈕或快捷鍵打開文件目錄,在用戶輸入標題後,自動添加目錄。

顯示的目錄可以有多級。

用戶點擊目錄可以跳到標題的所在。

操作

查找

用戶可以查找文本是否存在打開的文件或整個倉庫。

用戶可以查找倉庫的文件是否存在輸入的文件名。

用戶可以查找倉庫的文件是否存在輸入的標題。

用戶可以通過設置是否大小寫,設置正則查找。

查找得到可以通過點擊直接顯示對應文件。

替換

用戶可以替換打開的文件內容,用戶可以替換倉庫所有文件內容,用戶可以使用正則得到可以替換內容。

替換完成報告替換處。

選中

用戶可以通過快捷鍵選中,用戶選擇可以從字到句子。

用戶可以用快捷鍵全選,可以點擊菜單全選。

分享

用戶可以通過分享按鈕,把文本分享。

分享可以分享QQ空間、微博、Github、分享應用。

分享內容可以是文件,可以是Html、pdf。

用戶可以通過分享按鈕,分享倉庫,可以分享倉庫文件,可以分享倉庫做出Html、pdf。

用戶後臺分享,如果分享Html或pdf,後臺生成。

摺疊

用戶可以摺疊代碼和標題對於的文本。

用戶可以展開摺疊代碼。

拼寫檢查

用戶可以使用拼寫檢查,自動檢測用戶輸入,並提示用戶可以使用的輸入。

拼寫檢查支持英文和漢字,用戶可以添加自定義詞語到詞庫。

用戶可以重新傳圖片到雲。

用戶可以選擇整個文件夾的文件,把文件的圖片上傳到雲。

自動顯示雲空間剩餘,提醒用戶不足。

用戶可以使用私有賬號,可以使用公有賬號,提供公有賬號讓用戶購買

雲提供CDN加速,可以讓用戶購買。

上傳

上傳文件,如果使用私有云,自動新建文件夾,在上傳後綴添加用戶標識。

如果使用公有云,在文件後綴自動添加用戶標識。

如果雲不支持類型上傳,尋找另一個雲,把用戶文件上傳。如果所有云不支持,放本地。

創建Html

如果用戶設置實時,那麼在用戶更改文件,自動轉換爲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

自動在html 寫文件md5,如果文件md5沒修改,不轉換。

創建pdf

Git


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章