纯解析器 1.0.4

纯解析器 1.0.4

Stan Potemkin 维护。



  • 作者
  • JivoSite Inc.

什么是 PureParser

Platform Build Status Version License

PureParser 是一个工具,旨在简化如果许多条件可能导致这些字符串以不同方式显示时,采用本地化字符串的过程。

PureParser 允许将基本逻辑放入字符串本身,以控制输出,同时保持其可读性。

安装

C++ 静态库

git clone https://github.com/JivoSite/pure-parser.git
cd pure-parser
make cpp_lib

之后,请检查 build 文件夹中的 libPureParser.aPureParser.hppPureElement.hpp 文件。

C 静态库

git clone https://github.com/JivoSite/pure-parser.git
cd pure-parser
make c_lib

之后,请检查 build 文件夹中的 libpureparser.apure_parser.h 文件。

Swift Package Manager

https://github.com/JivoSite/pure-parser.git

Cocoapods

pod 'PureParser'

用法

C++ 示例

PureParser parser;
const std::string formula = "$[$name has ## You have] $[$number coupon(s) ## no coupons] expiring on $date";

parser.assignVariable("number", "7");
parser.assignVariable("date", "11/11/19");
const std::string result = parser.execute(formula, true, true);

std::cout << result << std::endl;

您有7张于2019年11月11日到期的优惠券

您可以在 ./cpp_src/PureParserExamples.cpp 找到更多示例
并通过 make cpp_run 运行它们

C 示例

pure_config_t config;
pure_config_set_default(&config);

pure_parser_t parser;
pure_parser_init(&parser, &config);

const char *formula = "$[$name has ## You have] $[$number coupon(s) ## no coupons] expiring on $date";
pure_parser_assign_var(&parser, "number", "7");
pure_parser_assign_var(&parser, "date", "11/11/19");

char *result_buff = NULL;
size_t result_len = 0;
pure_parser_execute(&parser, formula, true, true, &result_buff, &result_len);

if (result_buff) {
    printf("%s\n", result_buff);
    free(result_buff);
}

您有7张于2019年11月11日到期的优惠券

您可以在 ./c_wrapper/pure_parser_examples.c 找到更多示例
并通过 make c_run 运行它们

Swift 示例

let parser = PureParser()
let formula = "$[$name has ## You have] $[$number coupon(s) ## no coupons] expiring on $date"

parser.assign(variable: "number", value: "7")
parser.assign(variable: "date", value: "11/11/19")
let result = parser.execute(formula, collapseSpaces: true, resetOnFinish: true)

print(result)

您有7张于2019年11月11日到期的优惠券

您可以在 ./swift_wrapper/PureParserExamples.swift 找到更多示例
并通过 make swift_run 运行它们

包含内容

主要有五个术语:frame(框架)、variable(变量)、block(块)、alias(别名)和 formula(公式)。
让我们仔细看看。

框架

帧是待解析文本的一部分,可以包含任何逻辑元素,如果有需要的话。

PureParser parser;
const char *formula = "Hello world";

parser.execute(formula, true, true);
// "Hello world"

变量

变量是可以分配给文本值的命名逻辑元素,或者全部不设置。

默认情况下,变量以美元符号开头,例如:$变量名

PureParser parser;
const char *formula = "You saved the photo into folder '$folder'.";

parser.assignVariable("folder", "Family");
parser.execute(formula, true, true);
// "You saved the photo into folder 'Family'."

区块

区块是一个逻辑元素,包含一个或多个由特殊标记分隔的 。区块的作用是解析其 的顺序,并获取第一个成功解析的

如果其帧都不能成功解析,则区块本身变为非法,并且会被其父元素跳过。区块可以是嵌套的。

默认情况下,区块以美元符号开头,并用方括号包围其帧之间的分隔符,例如:$[第一帧 ## 第二帧 ## 第三帧]

PureParser parser;
const char *formula = "You saved the photo into $[folder '$folder' ## default folder].";

parser.execute(formula, true, true);
// "You saved the photo into default folder."

parser.assignVariable("folder", "Family");
parser.execute(formula, true, true);
// "You saved the photo into folder 'Family'."
PureParser parser;
const char *formula = "You saved the photo $[into folder '$folder'].";

parser.execute(formula, true, true);
// "You saved the photo."

parser.assignVariable("folder", "Family");
parser.execute(formula, true, true);
// "You saved the photo into folder 'Family'."

别名

别名是任何帧的虚拟名称。如果您为帧分配别名,它将默认变为非活动状态。这意味着,在执行区块时,解析过程不会将那个帧视为有效结果是 gelir。

如果您需要在区块内选择框架,但您的框架不包含任何能够控制解析流的 变量 时,这非常有用。

默认情况下,别名 用冒号包围,并置于框架的第一元素中,如 你没有钱但没有足够的 $$[:no-money:] money。别名不会解析到输出中。

PureParser parser;
const char *formula = "You have $[:none: no coupons ## :one: one coupon ## $number coupons]";

parser.execute(formula, true, true);
// "" // no alias activated, no variables set

parser.enableAlias("none");
parser.execute(formula, true, true);
// "You have no coupons"

parser.enableAlias("one");
parser.execute(formula, true, true);
// "You have one coupon"

parser.assignVariable("number", "12");
parser.execute(formula, true, true);
// "You have 12 coupons"

公式

最后,公式 是您传递给解析器的根框架。

作者和许可

JivoSite Inc. [email protected], 2019.

纯解释器(PureParser)遵循MIT许可协议提供。
有关更多信息,请参阅LICENSE文件。