当一串串文字在年轻人眼前盘旋时,他的脑海里浮现出 对很多事情的想法。然而,当他集中精力时,他们必须等待 全神贯注于他面前不断变化的模式。一丝光芒 一段埋藏代码的反射引起了他的注意,他的任何希望都化为泡影 丢失的。就在他向一边看去的那一刻,风景变得不同了。 年轻人轻轻叹了口气,神情严肃地拖着脚步继续前行, 注定要永远在荒凉的代码库中徘徊。
Differ 是一个灵活的纯 Ruby diff 库,适用于命令行脚本和 Web 应用程序。灵活性来自于这样一个事实:差异可以完全任意的粒度级别构建(一些常见的粒度是内置的),并且可以以多种格式输出。
sudo gem install不同
有多种使用 Differ 的方法,具体取决于您的情况和需求。
@original = “史诗般的笑猫失败了!” @current = “史诗狼人失败了!”
您可以直接调用Differ模块。
要求“不同”
有许多内置的 diff 方法可供选择......
@diff =不同。 diff_by_line ( @当前, @原始) # => "{"史诗般的笑猫失败了!" >> "史诗般的狼人失败了!"}" @diff =不同。 diff_by_word ( @当前, @原始) # =>“史诗{“lolcat”>>“狼人”}失败!” @diff =不同。 diff_by_char ( @当前, @原始) # => "史诗{+"wo"}l{-"olcat "}f{+"m"}a{+"n fa"}il!"
...或者直接调用#diff并提供您自己的边界字符串!
@diff =不同。 diff ( @current , @original ) # 隐式按行! # => "{"史诗般的笑猫失败了!" >> "史诗般的狼人失败了!"}" @diff =不同。差异( @当前, @原始, '我' ) # => "Epi{"c lolcat fa" >> "c Wolfman fa"}il"
如果你想要一些更内联的东西......
需要“不同/字符串” @diff = @当前。 diff ( @original ) # 隐式按行! # => "{"史诗般的笑猫失败了!" >> "史诗般的狼人失败了!"}"
…或者更多内联…
@diff = ( @current - @original ) # 隐式按行! # => "{"史诗般的笑猫失败了!" >> "史诗般的狼人失败了!"}" $; = '' @diff = ( @当前- @原始) # =>“史诗{“lolcat”>>“狼人”}失败!”
...我们几乎已经为您提供了帮助。
需要不同的输出格式?我们也有一些。
不同。格式= :ascii # <- 默认 不同。格式= :颜色 不同。格式= :html 不同。格式= MyCustomFormatModule
不想仅更改单个差异输出的系统范围默认值?是的,我也是。
@diff = ( @当前- @原始) @差异。格式为( :颜色)
版权所有 © 2009 彼得·范德·布鲁根。
(GIFT 许可证,v1)
特此授予您将本软件和/或其源代码用于您选择的任何目的的许可。说真的,发疯吧。将其用于您的个人 RSS 提要阅读器、您利润丰厚的社交网络或您的火星任务。
我不在乎,这是你的。如果您愿意,可以更改它的名称 - 事实上,如果您开始显着更改它的功能,我宁愿您这样做!让它成为您自己的小艺术品,并在角落里加上时尚流畅的签名。我真正做的只是给你画布。还有我的祝福。
时刻明辨是非,让别人看到你的好作品。