一种基于markdown语法扩展的文本编辑方法与系统

文档序号:392310 发布日期:2021-12-14 浏览:5次 >En<

阅读说明:本技术 一种基于markdown语法扩展的文本编辑方法与系统 (Markdown grammar extension-based text editing method and system ) 是由 林超群 李仁杰 张翔 王彪 于 2021-08-17 设计创作,主要内容包括:本发明给出了一种基于markdown语法扩展的文本编辑方法与系统,包括通过读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;根据用户自定义配置的规则对应地生成用于处理所述markdown纯文本的语法规则,根据所述语法规则对所述markdown纯文本进行解析;根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置;通过逐个运行规则的方式,对所述markdown纯文本进行解析,将所述解析后的文本转换为html文本。本发明可实现语法的个性化扩展,并实现对编辑器解析的文本的个性化样式配置,同时通过分页异步解析的方法解决阅读大型markdown文本时卡顿的问题。(The invention provides a text editing method and system based on markdown grammar expansion, which comprises the steps of reading a markdown text file uploaded by a user, and converting the markdown text file into a markdown plain text; correspondingly generating a grammar rule for processing the markdown plain text according to a rule configured by a user, and analyzing the markdown plain text according to the grammar rule; writing css according to a pattern configured by a user in a self-defined mode, storing the pattern in a css mode, and loading the css to a header of html when analyzing the markdown plain text so as to configure the grammar rule; and analyzing the markdown plain text in a mode of operating rules one by one, and converting the analyzed text into an html text. The invention can realize the personalized extension of grammar, realize the personalized style configuration of the text analyzed by the editor, and solve the problem of pause when reading large markdown text by a paging asynchronous analysis method.)

一种基于markdown语法扩展的文本编辑方法与系统

技术领域

本发明涉及软件工程技术领域,尤其是一种基于markdown语法扩展的文本编辑方法与系统。

背景技术

Markdown是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档。它拥有一套成体系而固定的语法规则。想要用Markdown语言编写出较为个性化的文档较为困难。

目前市面上有多款markdown编辑器和阅读器,但是都存在以下问题:

1、缺少个性化语法配置的功能;

2、同时缺少对阅读器样式个性化配置的能力;

3、阅读大型markdown文本时非常卡顿的问题。

发明内容

本发明提出了一种基于markdown语法扩展的文本编辑方法与系统,以解决上文提到的现有技术的缺陷。

在一个方面,本发明提出了一种基于markdown语法扩展的文本编辑方法,该方法包括以下步骤:

S1:读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;

S2:根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析;

S3:根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义;

S4:通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。

以上方法读取markdown文本,根据自定义配置的语法规则,通过链式解析算法逐条规则解析改文本,转换为浏览器可以阅读的html文本,同时加载用户自定义的样式,最终实现语法扩展和样式个性化配置。

在具体的实施例中,所述读取用户上传的markdown文本文件时使用filereader的api。

在具体的实施例中,所述样式具体包括语法扩展和样式个性化。

在具体的实施例中,所述通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析前,还包括对所述markdown纯文本进行分页,具体步骤包括:

依次读取所述markdown纯文本中的L行文本,每读取L行文本后将所述L行文本作为一页待解析文本并对所述一页待解析文本执行所述S4中的步骤,再读取接下来的L行文本;

其中,L为每个一页待解析文本所占的行数,且L=屏幕高度/每行固定所占高度。通过分页异步解析文本的方法避免了一次性解析所有markdown造成的卡顿问题。

在具体的实施例中,当用户读取markdown纯文本的过程中跳转到第N页待解析文本时,对所述第N页待解析文本执行所述S4中的步骤,其中所述第N页待解析文本具体为所述markdown纯文本中第(N-1)*L行到第N*L行的文本。

在具体的实施例中,所述S4还包括:

当解析时发现当前运行的所述函数有异常时,对所述函数对应的所述用户自定义配置的规则进行定位并反馈,同时跳过有异常的所述函数继续运行下一个函数。可实现当任意一条规则发生异常时,跳过该条规则,继续往下解析,并提示用户某一条自定义规则编写发生异常。

通过所述S4的链式解析,任意规则可以由任意多条子规则链式组合而成,从而提高了规则可扩展性;多条规则可以相互组合和排序,从而达到特殊的转译效果;当用户自定义规则时,如果规则编写有误,链式解析能够精确的定位到发生异常的规则,从而不影响其他规则的应用,从而提高该产品的容错能力。

在具体的实施例中,所述用户自定义配置的规则包括多条子规则,且所述多条子规则被用于在运行所述函数时被依次执行。

在具体的实施例中,所述的方法被用于markdown的阅读器中以便于阅读。

根据本发明的第二方面,提出了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机处理器执行时实施上述方法。

根据本发明的第三方面,提出一种基于markdown语法扩展的文本编辑系统,该系统包括:

markdown文本读取模块:配置用于读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;

自定义语法规则模块:配置用于根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析;

自定义样式模块:配置用于根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义;

链式解析模块:配置用于通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。

本发明通过读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析;根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义;通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。本发明可实现语法的个性化扩展,同时可以针对该语法进行markdown文本的阅读和编辑,并实现对编辑器解析的文本的个性化样式配置,同时通过分页异步解析的方法解决阅读大型markdown文本时非常卡顿的问题。

附图说明

包括附图以提供对实施例的进一步理解并且附图被并入本说明书中并且构成本说明书的一部分。附图图示了实施例并且与描述一起用于解释本发明的原理。将容易认识到其它实施例和实施例的很多预期优点,因为通过引用以下详细描述,它们变得被更好地理解。通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1是本申请可以应用于其中的示例性系统架构图;

图2是本发明的一个实施例的一种基于markdown语法扩展的文本编辑方法的流程图;

图3是本发明的一个实施例的一种基于markdown语法扩展的文本编辑系统的框架图;

图4是适于用来实现本申请实施例的电子设备的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

图1示出了可以应用本申请实施例的一种基于markdown语法扩展的文本编辑方法的示例性系统架构100。

如图1所示,系统架构100可以包括终端设备101、102、103,网络104和服务器105。网络104用以在终端设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。

用户可以使用终端设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。终端设备101、102、103上可以安装有各种应用,例如数据处理类应用、数据可视化类应用、网页浏览器应用等。

终端设备101、102、103可以是硬件,也可以是软件。当终端设备101、102、103为硬件时,可以是各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。当终端设备101、102、103为软件时,可以安装在上述所列举的电子设备中。其可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。

服务器105可以是提供各种服务的服务器,例如对终端设备101、102、103上展示的markdown文本文件提供支持的后台信息处理服务器。后台信息处理服务器可以对获取的markdown纯文本进行处理,并生成处理结果(例如html文本)。

需要说明的是,本申请实施例所提供的方法可以由服务器105执行,也可以由终端设备101、102、103执行,相应的装置一般设置于服务器105中,也可以设置于终端设备101、102、103中。

需要说明的是,服务器可以是硬件,也可以是软件。当服务器为硬件时,可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。当服务器为软件时,可以实现成多个软件或软件模块(例如用来提供分布式服务的软件或软件模块),也可以实现成单个软件或软件模块。在此不做具体限定。

应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。

根据本发明的一个实施例的一种基于markdown语法扩展的文本编辑方法,图2示出了根据本发明的实施例的一种基于markdown语法扩展的文本编辑方法的流程图。如图2所示,该方法包括以下步骤:

S201:读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本。

在具体的实施例中,所述读取用户上传的markdown文本文件时使用filereader的api。

S202:根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析。

在具体的实施例中,所述用户自定义配置的规则包括多条子规则,且所述多条子规则被用于在运行所述函数时被依次执行。

在具体的实施例中,使用以下函数(记作F)作为语法规则的载体,其中T表示S201中生成的markdown纯文本:

function F(T){

1、根据语法规则匹配

2、转换为目标文本T0

3、返回转换后的文本TO

}

下面举例具体说明上述函数F:

若用户自定义了一个语法规则F0,可以实现匹配markdown语法中的([B]任意markdwon文本),其表示但凡以[B]作为行开头的文本,一律转换为加粗字体<b>任意markdwon文本</b>。那么语法规则F0对应的函数F0的写法如下:

应当认识到,这些规则都可以由用户进行自定义配置,也可以通过加载现成的规则来获得。

S203:根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义。

在具体的实施例中,所述样式具体包括语法扩展和样式个性化。

S204:通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。

下面举例说明步骤S204中的链式解析方式:

例如,现有产品自带的规则F1、F2、F3以及用户自定义的规则Fa、Fb、Fc,那么解析的方法如下:

T=‘markdwon纯文本’

R=F1(T)

R=F2(R)

R=F3(R)

R=Fa(R)

R=Fb(R)

R=Fc(R)

……

解析完毕后,R为最终解析后的文本。

在具体的实施例中,所述通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析前,还包括对所述markdown纯文本进行分页,具体步骤包括:

依次读取所述markdown纯文本中的L行文本,每读取L行文本后将所述L行文本作为一页待解析文本并对所述一页待解析文本执行所述S4中的步骤,再读取接下来的L行文本;

其中,L为每个一页待解析文本所占的行数,且L=屏幕高度/每行固定所占高度。

在具体的实施例中,当用户读取markdown纯文本的过程中跳转到第N页待解析文本时,对所述第N页待解析文本执行所述S4中的步骤,其中所述第N页待解析文本具体为所述markdown纯文本中第(N-1)*L行到第N*L行的文本。

在具体的实施例中,所述S204还包括:

当解析时发现当前运行的所述函数有异常时,对所述函数对应的所述用户自定义配置的规则进行定位并反馈,同时跳过有异常的所述函数继续运行下一个函数。

在具体的实施例中,所述的方法被用于markdown的阅读器中以便于阅读。

图3示出了本发明的一个实施例的一种基于markdown语法扩展的文本编辑系统的框架图。该系统包括markdown文本读取模块301、自定义语法规则模块302、自定义样式模块303和链式解析模块304。

在具体的实施例中,markdown文本读取模块301被配置用于读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;

自定义语法规则模块302被配置用于根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析;

自定义样式模块303被配置用于根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义;

链式解析模块304被配置用于通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。

本系统通过读取markdown文本,根据自定义配置的语法规则,通过链式解析算法逐条规则解析改文本,转换为浏览器可以阅读的html文本,同时加载用户自定义的样式,最终实现语法扩展和样式个性化配置,同时通过分页异步解析的方法解决阅读大型markdown文本时非常卡顿的问题。

下面参考图4,其示出了适于用来实现本申请实施例的电子设备的计算机系统400的结构示意图。图4示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。

如图4所示,计算机系统400包括中央处理单元(CPU)401,其可以根据存储在只读存储器(ROM)402中的程序或者从存储部分408加载到随机访问存储器(RAM)403中的程序而执行各种适当的动作和处理。在RAM 403中,还存储有系统400操作所需的各种程序和数据。CPU 401、ROM 402以及RAM 403通过总线404彼此相连。输入/输出(I/O)接口405也连接至总线404。

以下部件连接至I/O接口405:包括键盘、鼠标等的输入部分406;包括诸如液晶显示器(LCD)等以及扬声器等的输出部分407;包括硬盘等的存储部分408;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分409。通信部分409经由诸如因特网的网络执行通信处理。驱动器410也根据需要连接至I/O接口405。可拆卸介质411,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器410上,以便于从其上读出的计算机程序根据需要被安装入存储部分408。

特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读存储介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分409从网络上被下载和安装,和/或从可拆卸介质411被安装。在该计算机程序被中央处理单元(CPU)401执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读存储介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读存储介质,该计算机可读存储介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。

可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言-诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言-诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)-连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。

附图中的流程图和框图,图示了按照本申请各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,并且这些单元的名称在某种情况下并不构成对该单元本身的限定。

本发明的实施例还涉及一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被计算机处理器执行时实施上文中的方法。该计算机程序包含用于执行流程图所示的方法的程序代码。需要说明的是,本申请的计算机可读介质可以是计算机可读信号介质或者计算机可读介质或者是上述两者的任意组合。

本发明通过读取用户上传的markdown文本文件,将所述markdown文本文件转换为markdown纯文本;根据用户自定义配置的规则以及当前使用的产品中自带的规则,利用每个所述规则对应地生成一个用于处理所述markdown纯文本的语法规则,再对每个所述语法规则进行与之相应的函数编写生成相应的函数,用于在运行所述函数时利用所述语法规则对所述markdown纯文本进行解析;根据用户自定义配置的样式进行css的编写,用于将所述样式以css的方式储存,当对所述markdown纯文本进行解析时,将所述css加载到html的header头部从而实现对所述语法规则的配置,其中所述样式为用户根据所述用户自定义配置的规则所定义;通过逐个运行所述函数的方式,基于所述函数对应的所述语法规则依次对所述markdown纯文本进行解析,运行完所有所述函数后得到解析后的文本,再将所述解析后的文本转换为html文本。本发明可实现语法的个性化扩展,同时可以针对该语法进行markdown文本的阅读和编辑,并实现对编辑器解析的文本的个性化样式配置,同时通过分页异步解析的方法解决阅读大型markdown文本时非常卡顿的问题。

以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。

14页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种基于Bi-GRU的字符级虚假评论自动生成工具

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!