Gem 发布一个 gem erb_to_slim

zw963 · 2014年08月30日 · 最后由 small_fish__ 回复于 2014年08月30日 · 2468 次阅读

发觉自己好久不写正则表达式了,正好最近不忙,练练手,测试下自己的正则水平。

这也是我发布的第一个 Gem, 好歹知道如何发布 Gem 了,好简单!

特点:

相比较 Slim 官方的 gem, 这个 gem 具有以下特点:

  1. 最小修改,保持原始的格式不变 (简单的执行正则替换), 方便和原始的 ERB 格式文件对照。
  2. 没有任何其他依赖。

用法:

$ gem install erb_to_slim

然后到 ERB 所在目录下:

erb_to_slim

你没有看错,没有任何参数,这会生成同名 slim 文件,并且将原来的 erb 文件,加个 bak 扩展名备份。

github 主页:

https://github.com/zw963/erb_to_slim

欢迎围观,拍砖。包含很详细的测试,这对于这个 Gem 最终能够发布,起到了决定性的作用. 有兴趣的同学,也可以通过这个项目学习正则表达式。;)

贡献

目前还不完善,主要根据我对 Slim Parser 的理解来写的,也没有在很多页面测试过。可能存在明显的错误, 希望大家有空试试,帮助我一起改善这个 Gem. 请给我提 issue

赞!

粗扫了下代码,似乎

def erb_exec_tag
  /<%(?!=)\s*((?m:.*?))\s*-?%>/
end

没能处理<%- %>的情况

[2] pry(main)> /<%(?!=)\s*((?m:.*?))\s*-?%>/.match('<%- foo -%>')
=> #<MatchData "<%- foo -%>" 1:"- foo">

于是replace_erb_exec_tag就会转换错...- - foo 这样

没记错的话(我有一年多不写 erb 了...)erb 的-是可以出现在<%--%>两边其一,也可以两边同时出现的 <%- foo -%>

@jasl 非常感谢指出错误,0.05 版中已经修复啦。

似乎 Slim 官方的这个:https://github.com/slim-template/html2slim 也可以 erb2slim…… 不过赞一个~

鼓励一下,坚持下去,看看 git 的 langest streak

#5 楼 @cassiuschen

是的,我说的官方的就指的那个。

官方的改动比较大,例如:添加了很多额外的换行,缩进,而 js 代码,直接给排到一行去了,而且貌似没有处理 <% 包含换行 %> 的情形。不过官方的应该更准确。

有个老项目,有这个需求,哈哈,果断试试~~~ 谢谢分享

btw: 测试发现部分转换结果错误!但是我还没有找到具体原因,我该如何向你 report,直接贴转化前和转化后的结果对照吗?

Hi, @small_fish__ , 不知道为什么,听你说到有错误,好激动...

如果你可以确定不是之前 ERB 文件排版/缩进的问题而造成的 Slim 解析错误, (我没有做语法分析,那样太复杂了,而且效果也不一定好), 你可以直接 发送转换前与转换后的结果到我的邮箱:zw963 网易。

谢谢。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号