Skip to content

Instantly share code, notes, and snippets.

@rafaelverger
Last active April 15, 2019 22:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rafaelverger/6fcb72fdb3fbb773f171c1372e286b26 to your computer and use it in GitHub Desktop.
Save rafaelverger/6fcb72fdb3fbb773f171c1372e286b26 to your computer and use it in GitHub Desktop.
Truncate HTML: cheerio X jsdom X html-truncate
const jsdom = require('jsdom');
const cheerio = require('cheerio');
const htmlTruncate = require('html-truncate');
const limit = 500;
const text = "<p>O ex-presidente Luiz Inácio Lula da Silva defendeu que o direito de protestar não deve afetar o direito de assistir aos jogos da Copa. \"Quem quiser fazer passeata que faça, quem quer levantar faixa que levante, faça o que quiser. O importante é que as pessoas saibam que da mesma forma que alguém tem o direito de dizer que não quer Copa, o cidadão que comprou ingresso e quer ir ver a Copa tem que ter a liberdade de ver a Copa\" , afirmou em entrevista à revista Carta Capital. \"O meu direito de protestar não impede o meu direito de ir ao estádio e ver um jogo de futebol e ir tranquilo e em paz.\"</p> <p>Lula também defendeu os investimentos do governo com o Mundial. \"O governo federal tomou uma atitude exemplar. Decidimos que o Estado iria fazer um financiamento de R$ 400 milhões pelo BNDES para o governador do Estado e para as empresas que quisessem fazer estádio e que iríamos ter a responsabilidade de investimento em parceria com os governos municipais e estaduais nas obras de infraestrutura. Isso está acontecendo\", afirmou. </p> <p>O ex-presidente também destacou que houve muita especulação sobre a conclusão dos estádios e minimizou as críticas sobre o uso futuro das arenas da Copa. \"Todos estão prontos. E todos da melhor qualidade possível. Se a gente vai ter futebol ou se vai ter festa, eu não sei. Mas como boa parte deles é da responsabilidade ou dos clubes ou do Estado, cada um vai se virar para justificar o que fez\", afirmou. </p> <p>No trecho da entrevista divulgado, Lula falou ainda que muitas pessoas estão sendo surpreendidas com algumas coisas que estão acontecendo no Brasil, como as manifestações, e comentou as reivindicações da população de melhoria dos serviços públicos. \"As pessoas reivindicavam um padrão Fifa de saúde. Poderiam ter reivindicado saúde padrão Interlagos, poderiam ter reivindicado um padrão qualquer torneio de tênis como Wimbledon e Roland Garros, mas como a Copa está na moda e a Fifa é a responsável, eles decidiram pedir padrão Fifa pelas exigências que ela fazia ao Brasil. Acho que isso é até saudável. O povo elevou o padrão reivindicatório dele. Isso é plenamente compreensível na democracia.\"</p> <p>Segundo uma nota a respeito da entrevista divulgada no site do Partido dos Trabalhadores na noite desta sexta-feira, o ex-presidente também disse que, se o Brasil perder a Copa, \"teremos um desastre similar àquele de 1950\". Lula afirmou ainda que conhece e gosta \"profundamente\" de Eduardo Campos e lamenta não ter o apoio do pessebista. Sobre Aécio Neves, o ex-presidente Lula disse que o tucano não tem a mesma firmeza ideológica de Eduardo e é um \"representante mais afinado com a elite\". Na conversa com o jornalista Mino Carta, Lula também reiterou o apoio à pré-candidatura de Dilma Rousseff à reeleição, segundo ele \"a mais preparada\" para governar o Brasil, e disse que a acompanhará em todos os palanques.</p>";
const methods = {
jsdom: () => jsdom.jsdom(text.slice(0, limit)+'...').body.innerHTML,
cheerio: () => cheerio.load(text.slice(0, limit)+'...').html(),
'html-truncate': () => htmlTruncate(text, limit),
};
// testing methods
for (let i=0; i<10; i++) {
console.log(`starting ${i+1}º iteration`);
Object.keys(methods).forEach(m => {
const start = Date.now();
const fixedText = methods[m](text, limit);
console.log(`[${m}] took ${Date.now() - start}ms`);
});
}
// asserting methods return same text
Object.keys(methods).forEach(m => {
console.log(m, methods[m](text, limit));
});
starting 1º iteration
[jsdom] took 51ms
[cheerio] took 11ms
[html-truncate] took 02ms
starting 2º iteration
[jsdom] took 16ms
[cheerio] took 01ms
[html-truncate] took 00ms
starting 3º iteration
[jsdom] took 10ms
[cheerio] took 01ms
[html-truncate] took 00ms
starting 4º iteration
[jsdom] took 07ms
[cheerio] took 00ms
[html-truncate] took 00ms
starting 5º iteration
[jsdom] took 12ms
[cheerio] took 01ms
[html-truncate] took 01ms
starting 6º iteration
[jsdom] took 08ms
[cheerio] took 00ms
[html-truncate] took 00ms
starting 7º iteration
[jsdom] took 09ms
[cheerio] took 00ms
[html-truncate] took 00ms
starting 8º iteration
[jsdom] took 12ms
[cheerio] took 01ms
[html-truncate] took 00ms
starting 9º iteration
[jsdom] took 08ms
[cheerio] took 01ms
[html-truncate] took 00ms
starting 10º iteration
[jsdom] took 09ms
[cheerio] took 01ms
[html-truncate] took 00ms
// returned truncated html (htmlTruncate is the only one that truncate only text values)
jsdom <p>O ex-presidente Luiz Inácio Lula da Silva defendeu que o direito de protestar não deve afetar o direito de assistir aos jogos da Copa. "Quem quiser fazer passeata que faça, quem quer levantar faixa que levante, faça o que quiser. O importante é que as pessoas saibam que da mesma forma que alguém tem o direito de dizer que não quer Copa, o cidadão que comprou ingresso e quer ir ver a Copa tem que ter a liberdade de ver a Copa" , afirmou em entrevista à revista Carta Capital. "O meu direito de ...</p>
cheerio <p>O ex-presidente Luiz In&#xE1;cio Lula da Silva defendeu que o direito de protestar n&#xE3;o deve afetar o direito de assistir aos jogos da Copa. &quot;Quem quiser fazer passeata que fa&#xE7;a, quem quer levantar faixa que levante, fa&#xE7;a o que quiser. O importante &#xE9; que as pessoas saibam que da mesma forma que algu&#xE9;m tem o direito de dizer que n&#xE3;o quer Copa, o cidad&#xE3;o que comprou ingresso e quer ir ver a Copa tem que ter a liberdade de ver a Copa&quot; , afirmou em entrevista &#xE0; revista Carta Capital. &quot;O meu direito de ...</p>
html-truncate <p>O ex-presidente Luiz Inácio Lula da Silva defendeu que o direito de protestar não deve afetar o direito de assistir aos jogos da Copa. "Quem quiser fazer passeata que faça, quem quer levantar faixa que levante, faça o que quiser. O importante é que as pessoas saibam que da mesma forma que alguém tem o direito de dizer que não quer Copa, o cidadão que comprou ingresso e quer ir ver a Copa tem que ter a liberdade de ver a Copa" , afirmou em entrevista à revista Carta Capital. "O meu direito de pro...</p>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment