ccuffs / poll-from-text
一个方便的软件包,可以从纯文本(最少组织成行)创建投票(问卷调查)。
Requires
- php: >=7.3
Requires (Dev)
- pestphp/pest: ^1.1
- phpunit/phpunit: 9.3.10
This package is auto-updated.
Last update: 2024-09-29 01:51:34 UTC
README
简介
poll-from-text
是一个 PHP 软件包,用于将半结构化文本解析成结构化数据,以便用于构建问卷调查(表单)。主要目标是允许最终用户使用纯文本构建动态表单,例如 Google 表单,就像这些表单要打印在纸上一样。
注意:此软件包假设“纯”文本具有某种格式,因此可能不是尽可能通用的。世界上有更大的问题。
✨特性
- 简单输入问题(用于创建
<input type="text" />
元素); - 带选项的问题(用于创建
<select>
元素); - 无值的选项(只有文本),例如
- 文本
,或* 文本
(如<option>Text</option>
); - 带值的选项,例如
a) 文本
(值是"a"
,如<option value="a">Text</option>
); - 问题和选项的数据属性(作为 JSON 对象),例如
{"type":"file"} 什么?
(用于创建自定义表单元素,例如<input type="file" />
)。
🚀 开始使用
1. 将此软件包添加到您的项目
在您的项目根目录下运行
composer require ccuffs/poll-from-text
2. 基本用法
实例化类 CCUFFS\Text\PollFromText
然后调用 parse()
提示:如果您不想实例化对象,请使用
CCUFFS\Text\PollFromText::make()
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse('Favorite color?') var_dump($questions);
输出应类似于
array(1) { [0]=> array(2) { ["text"]=> string(15) "Favorite color?" ["type"]=> string(5) "input" } }
新行(不带选项标记)表示新的问题
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse(' Favorite color? Favorite food? ') var_dump($questions);
输出应类似于
array(2) { [0]=> array(2) { ["text"]=> string(15) "Favorite color?" ["type"]=> string(5) "input" } [1]=> array(2) { ["text"]=> string(15) "Favorite food?" ["type"]=> string(5) "input" } }
您可以通过在行前添加 -
或 *
来创建带选项的问题
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse(' Choose favorite color - Green '); var_dump($questions);
输出应类似于
array(1) { [0]=> array(3) { ["text"]=> string(21) "Choose favorite color" ["type"]=> string(6) "select" ["options"]=> array(1) { ["text"]=> string(5) "Green", ["marker"]=> string(1) "-" } } }
3. 高级用法
您可以使用 )
创建带值的问题和选项,例如
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse(' Choose favorite color a) Green '); var_dump($questions);
输出应类似于
array(1) { [0]=> array(3) { ["text"]=> string(21) "Choose favorite color" ["type"]=> string(6) "select" ["options"]=> array(1) { ["a"]=> array(3) { ["text"]=> string(5) "Green" ["marker"]=> string(1) "a" ["separator"]=> string(1) ")" } } }
问题和选项都接受一个 JSON 字符串作为数据字段,例如
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse('{"attr":"value", "attr2":"value"} Type favorite color'); var_dump($questions);
输出应类似于
array(1) { [0]=> array(3) { ["text"]=> string(21) "Type favorite color" ["type"]=> string(5) "input" ["data"]=> array(2) { ["attr"]=> string(5) "value" ["attr2"]=> string(5) "value" } } }
选项的数据属性
$poller = new CCUFFS\Text\PollFromText(); $questions = $poller->parse(' Choose favorite color {"attr":"hi"} a) Green '); var_dump($questions);
输出应类似于
array(1) { [0]=> array(3) { ["text"]=> string(21) "Choose favorite color" ["type"]=> string(6) "select" ["options"]=> array(1) { ["a"]=> array(2) { ["text"]=> string(5) "Green" ["marker"]=> string(1) "a" ["separator"]=> string(1) ")" ["data"]=> array(1) { ["attr"]=> string(2) "hi" } } } } }
3.1 特定配置
两者 parse()
和 make()
都接受一个 $config
,它是一个数组,包含在生成问卷时要考虑的配置。以下是所有可用配置选项的完整列表
$config = [ 'multiline_question' => false, // if `true`, questions are allowed to have `\n` in their text. 'attr_validation' => PollFromText::ATTR_AS_TEXT, // allow any text a attribute (no validation) ];
4. 测试(与软件包开发相关)
如果您计划更改软件包的工作方式,请首先克隆它
git clone https://github.com/ccuffs/poll-from-text && cd poll-from-text
安装依赖项
composer install
进行更改。然后运行测试以确保没有出错
./vendor/bin/pest
应该有大量的绿色标记 😁
🤝 贡献
无论形式如何,您的帮助都非常受欢迎!请查看 CONTRIBUTING.md 文件以获取所有您可以贡献项目的途径。例如,建议新功能,报告问题/错误,提交拉取请求,或简单地使用项目并评论您的体验。我们鼓励您尽可能多地参与,但在与其他社区成员互动之前,请务必遵守 行为准则。
查看 ROADMAP.md 文件,了解项目应如何发展。
🎫 许可证
本项目采用MIT开源许可证授权,并可免费使用。
🧬 更新日志
查看本项目所有变更记录,请参阅CHANGELOG.md文件。
🧪 相关项目
以下是一份有趣的链接和相关项目的列表