免费注册 查看新帖 |

Chinaunix

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

有将文本转换为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 10:00 |显示全部楼层
回复 2# sjdy521


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

论坛徽章:
0
3 [报告]
发表于 2012-09-20 10:31 |显示全部楼层
回复 5# sjdy521


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

论坛徽章:
0
4 [报告]
发表于 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