Apresentando a missão

Apresentando a missão


Postado em

Eu tenho pensado em fazer essa jóia rubi por um tempo. Foi originalmente chamado de “texto-cheddar”, mas decidi que algo que parecia mais divertido seria melhor. Por um tempo, eu estava tentando reescrever essa biblioteca em C e nomeou o Repo Quesadilla. Acontece que escrever extensões C que manipula as cordas é realmente difícil, então agora a versão Ruby se chama Quesadilla.

Quesadilla é um analisador de texto no estilo de entidade. Quesadilla foi extraído do cheddar. É o que alimenta todo o texto de Cheddar analisando. Foi inspirado um pouco por Entidade de tweet do Twitter.

Como Cheddar trabalha no iOS e Mac (assim como na web), eu precisava de algo que pudesse me dar faixas para coisas especiais no texto. iOS e Mac convertem isso para um NSAttributedString usando os índices incluídos em cada entidade. Aqui está a fonte de como o cheddar para iOS o faz no Objective-C.

Também usamos quesadilla em gangorra (meu trabalho diário). Funciona muito bem para nós lá também.

Quesadilla suporta extrair o seguinte:

  • Markdown (itálico, ousado, ousado em itálico, striketrough, código e links)
  • Links
  • Nomeado emoji
  • Hashtags
  • Menciona o usuário

Aqui está um pequeno exemplo de como é uma hashtag:

Quesadilla.extract('Some #awesome text')
# => {
#   display_text: "Some #awesome text",
#   display_html: "Some #awesome text",
#   entities: (
#     {
#       type: "hashtag",
#       text: "#awesome",
#       display_text: "#awesome",
#       indices: (5, 13),
#       hashtag: "awesome",
#       display_indices: (5, 13)
#     }
#   )
# }

Você pode até fornecer um validador de usuário personalizado:

validator = lambda do |username|
  # User.where('LOWER(username) = ?', username.downcase).first.try(:id)
  username == 'soffes'
end

extraction = Quesadilla.extract('Real @soffes and fake @nobody', users: true, user_validator: validator)
# An entity for `soffes` will be added, but not for `nobody`

De qualquer forma, Quesadilla faz muitas coisas. Confira o ReadMe para mais ou leia a documentação. Ele é testado no Ruby 1.9.2, Ruby 1.9.3, Ruby 2.0.0, Jruby 1.7.2 (modo 1.9) e Rubinius 2.0.0 (modo 1.9), por isso deve funcionar para você.

Bata no Twitter Se você achar isso útil. Aproveitar!





Source link

Postagens Similares

Deixe um comentário

O seu endereço de email não será publicado. Campos obrigatórios marcados com *