7 个版本
使用旧的 Rust 2015
0.3.2 | 2019年12月19日 |
---|---|
0.3.1 | 2019年12月19日 |
0.3.0 |
|
0.2.3 | 2019年12月19日 |
0.1.1 |
|
#1625 in 文本处理
61 每月下载量
33KB
894 行
Doccy
Doccy 是一种简单的基于花括号的标记语言,是喜欢 HTML 的功能和灵活性但不喜欢编写 HTML 的人的替代品。
特性
查看最新的文档以获取有关Doccy 语法和提供的 API 的更多信息。
- 隐式段落和换行
- 简单的基于花括号的元素语法
- 支持所有 HTML 主体元素
- 命令行界面
示例
Rust
extern crate doccy;
use doccy::doccy_to_html;
fn main() {
match doccy_to_html("your document {em: here}") {
// <p>your document <em>here</em></p>
Ok(html) => println!("{}", html),
Err(error) => {}
};
}
命令行
# <p>your document <em>here</em></p>
echo "your document {em: here}" | doccy to-html
lib.rs
:
Doccy 是一种简单的基于花括号的标记语言,是喜欢 HTML 的功能和灵活性但不喜欢编写 HTML 的人的替代品。
语法
元素
两个花括号之间的任何内容都被视为一个元素。
常规元素
编写元素很简单
{h1: Top-level heading}
渲染为
<h1>Top-level heading</h1>
自闭合元素
某些元素不支持子元素,在这种情况下可以完全省略冒号。例如,换行(<br>
)可以写成
{br}
渲染为
<br>
如果您为不支持在 HTML 中自闭合的元素使用此语法,则将渲染关闭标签
{div}
渲染为
<div></div>
预格式化元素
有时需要忽略 Doccy 语法,您可以使用预格式化元素来做到这一点
{pre:#
You can use all of the {brackets} in here and they {em: won't be parsed!}
#}
渲染为
<pre>You can use all of the {brackets} in here and they {em: won't be parsed!}</pre>
这不仅限于 HTML 的 pre
元素,您还可以在任意元素上使用它。
属性
元素名称和冒号之间的任何内容都被期望是属性。
命名属性
具有值的命名属性看起来像
{h1 @class main header: Header}
渲染为
<h1 class="main header">Header</h1>
无值
{input @required}
渲染为
<input required>
包含特殊字符的值必须转义
{h1 @test Bad characters\: \@\#\%\.\{\}: ...}
渲染为
<h1 test="Bad characters: @#%.{}">...</h1>
除非它们是 URL 的一部分
{a @href https://www.example.com: Example}
渲染为
<a href="https://www.example.com">Example</h1>
数据属性
data-
属性的缩写
{pre %lang html: ...}
{pre %html: ...}
渲染为
<pre data-lang="html">...</pre>
<pre data-html>...</pre>
与命名属性一样,特殊字符必须转义。
类属性
class="..."
属性的缩写
{h1.main.header: Header}
渲染为
<h1 class="main header">Header</h1>
Id 属性
id="..."
属性的简写
{h1#main: Header}
渲染为
<h1 id="main">Header</h1>
段落
如果包含在特定上下文中的文本通过两个或更多行中断开,并且只包含内联元素,则这些文本将被视为一个或多个段落。
在文档主体中
This is a paragraph.
{h1: This is a header.}
And this is another.
渲染为
<p>This is a paragraph.</p>
<h1>This is a header.</h1>
<p>And this is another.</p>
在内容元素中
以下元素也会自动包裹段落:article
、aside
、blockquote
、div
、fieldset
、footer
、form
、header
、hgroup
、main
和 section
。
{blockquote: This is a paragraph.
And this is another.}
渲染为
<blockquote>
<p>This is a paragraph.</p>
<p>And this is another.</p>
</blockquote>
示例
解析和渲染文档
use doccy::doccy_to_html;
match doccy_to_html("your document {em: here}") {
// <p>your document <em>here</em></p>
Ok(html) => println!("{}", html),
Err(error) => {}
};
直接使用语法和渲染器
use doccy::grammar;
use doccy::render::Renderer;
let mut renderer = Renderer::new();
if let Ok(ast) = grammar::attributes("@href https\\://example\\.com") {
renderer.attributes(&ast);
}
println!("{}", renderer.output); // href="https://example.com"
依赖项
~770KB