Enquanto fluxos de texto giravam diante dos olhos do jovem, sua mente flutuava com pensamentos sobre muitas coisas. Eles teriam que esperar, no entanto, enquanto ele concentrava seu concentração total nos padrões mutáveis à sua frente. Um brilho de luz refletindo em um pedaço de código enterrado chamou sua atenção e qualquer esperança que ele tinha foi perdido. No exato momento em que ele olhou para o lado, a paisagem tornou-se diferente. O jovem deu um pequeno suspiro e avançou com solene resignação. fadado a vagar pelos desolados bancos de códigos para sempre.
Differ é uma biblioteca diff flexível e pura em Ruby, adequada para uso em scripts de linha de comando e aplicativos da web. A flexibilidade vem do fato de que as diferenças podem ser construídas em níveis de granularidade completamente arbitrários (algumas das mais comuns são integradas) e podem ser produzidas em vários formatos.
sudo gem install difere
Existem várias maneiras de usar o Differ, dependendo da sua situação e necessidades.
@original = "Falha no lolcat épico!" @current = "O lobisomem épico falhou!"
Você pode chamar o módulo Differ diretamente.
exigir 'diferente'
Existem vários métodos de comparação integrados para você escolher…
@diff = Diferente . diff_by_line ( @atual , @original ) # => "{"Falha épica do lolcat!" >> "Falha épica do lobisomem!"}" @diff = Diferente . diff_by_word ( @atual , @original ) # => "Épico {"lolcat" >> "wolfman"} falhou!" @diff = Diferente . diff_by_char ( @atual , @original ) # => "Épico {+"wo"}l{-"olcat "}f{+"m"}a{+"n fa"}il!"
… ou ligue diretamente para #diff e forneça sua própria string de limite!
@diff = Diferente . diff ( @current , @original ) # implicitamente por linha! # => "{"Falha épica do lolcat!" >> "Falha épica do lobisomem!"}" @diff = Diferente . diff ( @atual , @original , 'i' ) # => "Epi{"c lolcat fa" >> "c wolfman fa"}il"
Se você quiser algo um pouco mais inline…
requer 'diferente/string' @diff = @atual . diff ( @original ) # implicitamente por linha! # => "{"Falha épica do lolcat!" >> "Falha épica do lobisomem!"}"
… ou muito mais em linha…
@diff = ( @current - @original ) # implicitamente por linha! # => "{"Falha épica do lolcat!" >> "Falha épica do lobisomem!"}" $; = ' ' @diff = ( @atual - @original ) # => "Épico {"lolcat" >> "wolfman"} falhou!"
… nós praticamente ajudamos você.
Precisa de um formato de saída diferente? Também temos alguns deles.
Diferente . formato = :ascii # <- Padrão Diferente . formato = :cor Diferente . formato = :html Diferente . formato = MeuCustomFormatModule
Não deseja alterar o padrão de todo o sistema para apenas uma única saída diff? Sim, eu também.
@diff = ( @atual - @original ) @diff . formato_as ( :cor )
Copyright © 2009 Pieter Vande Bruggen.
(A Licença GIFT, v1)
É concedida permissão para usar este software e/ou seu código-fonte para qualquer finalidade que você escolher. Sério, enlouqueça. Use-o para seu leitor pessoal de feeds RSS, sua rede social extremamente lucrativa ou sua missão em Marte.
Eu não me importo, é seu. Mude o nome se quiser – na verdade, se você começar a mudar significativamente o que ele faz, prefiro que o faça! Faça dela sua própria pequena obra de arte, completa com uma assinatura elegante e fluida no canto. Tudo o que fiz foi entregar-te a tela. E minha bênção.
Sempre diferencie o certo do errado e deixe que os outros vejam suas boas obras.