免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2765 | 回复: 7
打印 上一主题 下一主题

有将文本转换为pod的模块吗? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-20 09:54 |只看该作者 |倒序浏览
本帖最后由 kk861123 于 2012-09-20 11:01 编辑

RT... tks~

再详细说明一下情况:
我有一个模板文件类似Template模块的语法,但因为可视性不好,所以想解析成pod格式便于观看和检查。
现在的做法是,由于模板的解析程序已经很成熟了,所以就直接拿来解析成对应perl数据结构,然后使用
  1. Pod::Parser
复制代码
模块对数据结构重新解析成pod模式,解析的还不是很好效果也不怎么样,所以上来请教!


个人解析过程举例:
1. 模板文件如下:
  1. Dear <t:var "first_name"/> <t:var "last_name"/>,

  2. This is paragraph ONE,this is a<t:if "$*->{PIP}"> PIP</t:if> card.

  3. <t:if "$*->{COND1}">

  4. This is paragraph TWO
  5.     blabla...
  6. <t:elsif "$*->{COND1}">

  7. This is paragraph THREE
  8.     blabla...
  9. <t:elsif "$*->{COND1}">

  10. This is paragraph THREE
  11.     blabla...
  12. </t:if>

  13. Thanks!
复制代码
2. 解析模板文件为:
  1. $VAR1 = [
  2.           {
  3.             'content' => 'Dear ',
  4.             'type' => 'const'
  5.           },
  6.           {
  7.             'content' => ' ',
  8.             'type' => 'var',
  9.             'attr' => 'first_name'
  10.           },
  11.           {
  12.             'content' => ',

  13. This is paragraph ONE,this is a',
  14.             'type' => 'var',
  15.             'attr' => 'last_name'
  16.           },
  17.           {
  18.             'conds' => [
  19.                          '$root->{PIP}'
  20.                        ],
  21.             'type' => 'cond',
  22.             'queues' => [
  23.                           [
  24.                             {
  25.                               'content' => ' PIP',
  26.                               'type' => 'const'
  27.                             }
  28.                           ]
  29.                         ]
  30.           },
  31.           {
  32.             'content' => ' card.

  33. ',
  34.             'type' => 'const'
  35.           },
  36.           {
  37.             'conds' => [
  38.                          '$root->{COND1}',
  39.                          '$root->{COND1}',
  40.                          '$root->{COND1}'
  41.                        ],
  42.             'type' => 'cond',
  43.             'queues' => [
  44.                           [
  45.                             {
  46.                               'content' => '

  47. This is paragraph TWO
  48.     blabla...
  49. ',
  50.                               'type' => 'const'
  51.                             }
  52.                           ],
  53.                           [
  54.                             {
  55.                               'content' => '

  56. This is paragraph THREE
  57.     blabla...
  58. ',
  59.                               'type' => 'const'
  60.                             }
  61.                           ],
  62.                           [
  63.                             {
  64.                               'content' => '

  65. This is paragraph THREE
  66.     blabla...
  67. ',
  68.                               'type' => 'const'
  69.                             }
  70.                           ]
  71.                         ]
  72.           },
  73.           {
  74.             'content' => '

  75. Thanks!

  76. ',
  77.             'type' => 'const'
  78.           }
  79.         ];
复制代码
3. 使用pod:arser 解析上面的数据结构成pod格式,然后输出pod文本,使用perldoc查看这个文本格式如下:


如图暂时指进行了分行和加粗操作。由于文本中含有的一些不可控的空格,所以解析的不完善,还要继续改进。

当然我提供的文本只是一小部分,文件大的情况下是很杂乱的,我只想让格式更清晰显示更明了,便于查看模板逻辑等。因为只对perl这面比较熟就想到了pod,大家有什么其他的建议请不吝赐教!

论坛徽章:
0
2 [报告]
发表于 2012-09-20 09:58 |只看该作者
pod不就是文本?

论坛徽章:
0
3 [报告]
发表于 2012-09-20 10:00 |只看该作者
回复 2# sjdy521


    我想将一段文本转换成pod的格式,使用perldoc来显示其效果

论坛徽章:
78
双子座
日期:2013-10-15 08:50:09天秤座
日期:2013-10-16 18:02:08白羊座
日期:2013-10-18 13:35:33天蝎座
日期:2013-10-18 13:37:06狮子座
日期:2013-10-18 13:40:31双子座
日期:2013-10-22 13:58:42戌狗
日期:2013-10-22 18:50:04CU十二周年纪念徽章
日期:2013-10-24 15:41:34巨蟹座
日期:2013-10-24 17:14:56处女座
日期:2013-10-24 17:15:30双子座
日期:2013-10-25 13:49:39午马
日期:2013-10-28 15:02:15
4 [报告]
发表于 2012-09-20 10:14 |只看该作者
举个例子呗

论坛徽章:
0
5 [报告]
发表于 2012-09-20 10:16 |只看该作者
本帖最后由 sjdy521 于 2012-09-20 10:16 编辑

回复 3# kk861123


    你的文本也是一种常见的规范化的文档格式吗?比如说AsciiDoc之类的。 不然只是一段普通的文本,你直接套个=head =cut不就完了。 想不通你到底是何意

论坛徽章:
0
6 [报告]
发表于 2012-09-20 10:31 |只看该作者
回复 5# sjdy521


    谢谢回复,我整理一下例子!

论坛徽章:
0
7 [报告]
发表于 2012-09-20 11:34 |只看该作者
本帖最后由 sjdy521 于 2012-09-20 11:34 编辑

去了解了下Pod::Parser这个模块,怎么感觉是用来分析pod的,也能够把一个hash转成pod吗?求指导下怎么用

论坛徽章:
0
8 [报告]
发表于 2012-09-20 11:53 |只看该作者
sjdy521 发表于 2012-09-20 11:34
去了解了下Pod:arser这个模块,怎么感觉是用来分析pod的,也能够把一个hash转成pod吗?求指导下怎么用


是的,这个模块确实是用于解析pod文本的,然后一般用来转换成其他格式信息。我主要用了
  1. Pod::InputObjects
复制代码
里的物件进行我想要的组装,然后输出。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP