markdown sum
markdown sum
https://www.markdownguide.org/basic-syntax#horizontal-rules
Markdown
lv1= lv2= type=
editor.md 当前使用;based on marked
在 core 基础上,提供 样式 同步滚动 界面 快捷键 等额外功能,语法高亮用的CodeMirror
E:\uninote\mynote\basic\web\link\take -- old
E:\uninote\mynote-front\static\editor.md
〖E:\projects\editor.md〗
http://a.md.my/
http://a.md.my/examples/index.html -- test
online:
https://github.com/pandao/editor.md
https://pandao.github.io/editor.md/
index:
https://pandao.github.io/editor.md/examples/index.html
full examples:
https://pandao.github.io/editor.md/examples/full.html
mynote-front base on(copy from): 63786e671e2c1a1fd2be25b54a8910cd3bbc7c0a of E:\uninote\mynote-front\static\editor.md
lv1= lv2= type=
markdown test expmt 格式测试
uninote、掘金
E:\projects\github-test
E:\projects\github-test\lc
E:\uninote\mynote-site-docs\lc
E:\projects\gogs-test
editor.md local:
http://a.md.my/examples/index.html
markedjs local:
http://a.mdcore.my/docs/demo/index.html
phpleague commonMark & HyperDown(思否)
http://a.md.my/my/index.html
js commonmark:
https://github.com/markdown-it/markdown-it
parsedown
https://parsedown.org/demo
parse markdown
E:\uninote\mynote-front\static\editor.md\src\editormd.js
/**
* 解析和保存Markdown代码
* Parse & Saving Markdown source code
*
* @returns {editormd} 返回editormd的实例对象
*/
save : function() {
表情 emoji
https://www.webfx.com/tools/emoji-cheat-sheet/
掘金禁用、github gogs 启用
E:\projects\editor.md\examples\emoji.html
http://a.md.my/examples/emoji.html
可以配置 emoji 的 hosts
lv1= lv2= type=
marked core base
上万的start,fork 2k+
仅提供 md 转 html,样式不提供;太依赖正则,很难修改。
〖E:\projects\marked〗
https://github.com/chjj/marked
local:
http://a.mdcore.my/docs/demo/index.html
查看 lexer 结果:
online test demo
https://marked.js.org/demo/
basic
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Marked in the b
rowser</title>
</head>
<body>
<div id="content"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
document.getElementById('content').innerHTML =
marked('# Marked in browser\n\nRendered by **marked**.');
</script>
</body>
</html>
heading
<!doctype html>
<html>
<head>
<meta charset="utf-8"/>
<title>Marked in the browser</title>
</head>
<body>
<div id="content"></div>
<script src="https://cdn.jsdelivr.net/npm/marked/marked.min.js"></script>
<script>
var content = '# Marked in browser\n\n### Install from an Archive File\nRendered by **marked**.';
const renderer = new marked.Renderer()
let index = -1
renderer.heading = function (text, level) {
return `<h${level} id="titleAnchor-${index++}">${text}</h${level}>`
}
document.getElementById('content').innerHTML = marked(content, { renderer: renderer });
</script>
</body>
</html>
如何实现markdown文章标题导航 双向
https://www.u3xyz.com/detail/32#titleAnchor-7
code ana
语法分析在 worker.js 中:
Lexer.prototype.token = function(src, top) {
case 'parse':
var startTime = new Date();
var lexed = marked.lexer(e.data.markdown, e.data.options);
var lexedList = [];
for (var i = 0; i < lexed.length; i++) {
demo.html
官方demo的解析在worker中,不便于调试:http://a.mdcore.my/docs/demo/index.html
可以用此简单版 demo.html
commits
使用本地 js,因此选择版本功能失效
CommonMark compliance
https://github.com/markedjs/marked/issues/1202
PR #1160 looks to run Marked against the CommonMark spec test cases: http://spec.commonmark.org/0.28/spec.json
So far the results show that we are roughly 60% spec-compliant.
lv1= lv2= type=todo
markdown编辑、同步设计
前端传参:登录、md内容、md path、git log hash、[user message]
client a.md v4 -> v4.1
server: a.md v6
controller:
1、new md
2、编辑 md
3、save md
0 .git/index.lock (手动),if fail , 等待重试
1 reset --hard hash
2 将md内容写入md path
3 git add *; git add -u; git commit -m "user message"
4 git rebase to v6
if(suc) {
v7
git push // git server,一定保证成功
return ok, & v7
} else {
conflict // 报告用户,暂不解决
return fail
}
5 remove .git/index.lock
git add *
git add -u
git commit -m "update"
git push origin master
lv1= lv2= type=
linux/mac下git调用
必须解决id_rsa/known_hosts两个文件的访问、权限问题。
eson环境,必须在这里??
/Library/WebServer/.ssh
还必须要copy known_hosts文件
服务器上,copy到/home/www/.ssh,注意权限
lv1= lv2= type=todo
git 环境变量
解决方案:直接使用绝对路径调用 git
php shell cmd
使用php env 环境变量 可以解决,但这样有20ms左右的性能开销。
function get_time() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}
$b = get_time();
putenv("PATH=/usr/local/git/bin:" . trim(`echo \$PATH`));
echo (get_time() - $b) * 1000 . "ms";
最终方案:不要用service,新建一个用户,手动启动php-fpm
or set_include_path?
or 仅在需要调用git时设置此变量。目前仅测试环境需要,正式环境不需要git path设置。
commits
SHA-1: 86d6c2ad63680b462762b098ef8898a179ad6d00
* save后通知workman更新文章索引
SHA-1: 6d401ec0b4b3f2d9cd39ecc463317b3c2692201e
* git路径传入save.sh,并且捕获错误输出
sample log
2018-06-17 18:42:19 [223.98.184.56][-][-][info][shell]
HEAD is now at a033b1b update
2018-06-17 18:42:19 [223.98.184.56][-][-][info][shell]
[master 8fc17ba] update
1 file changed, 2 insertions(+)
create mode 100644 sx2.md
Current branch master is up to date.
To git@121.40.183.99:mynote_1068799191.git
a033b1b..8fc17ba master -> master
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 42 0 42 0 0 5688 0 --:--:-- --:--:-- --:--:-- 42000
A_file_list ok - ./docs/1068799191/sx2.md
lv1= lv2= type=
todo
1 log什么时候flush? log 研究yii的日志、use stack
2 返回值报错 status != 0 的处理
测试点:windows下中文
lv1= lv2= type=
parsedown
https://parsedown.org/
https://parsedown.org/demo
声称 GitHub flavored,但实测不符。markdown todo
## test head2
- test text
## test head2
E:\uninote\mynote\basic\models\ParseDown.php
SHA-1: 1fcc00b01c92a2b51c9b9b9da644d06aed8c6a84
* ParseDown 1.7.3
SHA-1: 9b2fae07a9b6e18b49fe56ee203dc9fc05da1cf8
* 【bug】- 修复md转text文本空白符问题(所有空白符丢失)
使用ParseDown的markdown解析功能,但修改为解析为纯文本,by collin
hi, in this demo, it seems that Parsedown does't produce the result conforms to GFM, any ideas?
ps: can you tell me the which exactly original parser is ? some url would be ok. thanks.
https://github.com/erusev/parsedown/issues/725
lv1= lv2= type=
HyperDown
E:\uninote\mynote\basic\models\HyperDown
SegmentFault 维护
https://github.com/SegmentFault/HyperDown
问题:不活跃,issue 无人回答
不遵循 CommonMrk spec
不再使用
剪贴板图片
Editor.insertValue(img_str);
lv1= lv2= type=
图片上传
http://{{host}}/api/markdown/uploadpic
SHA-1: 21bc3e3cd130c39d831939a00f1cda9c5818331c
* 图片上传class,copy from basic\web\link\take\lib\php
* 使用控件上传时,必须要符合控件约定的格式
* 图片上传接口(临时版本)
lv1= lv2= type=
图片fetch 外网转存
http://{{host}}/api/markdown/fetchpic
SHA-1: be0020e80e6ada89f704396807011f51006c9120
* 外网图片fetch时,用 Content-Type 值作为后缀名存储
SHA-1: dac4ffb14d3292a799ca08fd7dbe9911c102e2ad
* 图片fetch验证:内网不要获取
返回绝对地址
test case
pic
https://gss0.bdstatic.com/5bVWsj_p_tVS5dKfpU_Y_D3/res/r/image/2017-09-27/297f5edb1e984613083a2d3cc0c5bb36.png
https://user-gold-cdn.xitu.io/2019/5/29/16b03fc4381323d1
webp
https://user-gold-cdn.xitu.io/2019/5/29/16b03fc4381323d1?imageView2/0/w/1280/h/960/format/webp/ignore-error/1
301
http://a.pjkit.my/tools/www_saver/tests/status_code/301.php
掘金,如果浏览器支持,会返回webp格式
lv1= lv2= type=
markdown todo
客户端 markdown编辑器
markdown to text for 摘要 & es 索引
双向同步滚动体验不好,可以选择是否同步
lv1= lv2= type=
mardown解析:分布式 php
markdown转纯文本 for es
客户端 markdown编辑器
整理所有的解析器,做一个对比
markdown sum
markdown 转纯文本有问题
test cases
list 后面需要两个换行(使用正则匹配,很难修改),掘金不用,其他都需要,包括github:
## test head2
- test text
## test head2
取消自动编号,现在不能有空格
a
b
c
d
http:/abc.com
lv1= lv2= type=
github markdown
What library does Github use for parsing markdown?
https://stackoverflow.com/questions/39560644/what-library-does-github-use-for-parsing-markdown
github/markup
https://github.com/github/markup#markups
gjtorikian/commonmarker
https://github.com/gjtorikian/commonmarker
gfm GitHub Flavored Markdown Spec
https://github.github.com/gfm/
CommonMark 的严格超集
CommonMark Spec
https://spec.commonmark.org/0.29/#why-is-a-spec-needed-
Version 0.29 (2019-04-06)
test cases
http://spec.commonmark.org/0.29/spec.json
markdown-it/markdown-it
js 实现版本
https://github.com/markdown-it/markdown-it
League\CommonMark
http://a.md.my/my/index.html
php 实现版本
https://commonmark.thephpleague.com
thephpleague/commonmark
Highly-extensible PHP Markdown parser based on the CommonMark spec. https://commonmark.thephpleague.com
https://github.com/thephpleague/commonmark
composer require league/commonmark