Представляємо Кесаділью — Сем Софес

Представляємо Кесаділью — Сем Софес


Опубліковано на

Я вже деякий час думав про те, щоб зробити цей дорогоцінний камінь Ruby. Спочатку він називався «чеддер-текст», але я вирішив, що щось, що звучить веселіше, буде кращим. Деякий час тому я намагався переписати цю бібліотеку на C і назвав репо Кесаділья. Виявляється, писати розширення C, які маніпулюють рядками, дуже важко, тому тепер версія Ruby називається Quesadilla.

Quesadilla — це текстовий парсер у стилі сутності. Кесаділья була видобута з Чеддера. Це те, що забезпечує розбір тексту в Чеддері. Це було трохи навіяно Об’єкт твітів Twitter.

Оскільки Cheddar працює на iOS і Mac (а також в Інтернеті), мені потрібно було щось, що могло б дати мені діапазони для особливих речей у тексті. iOS і Mac перетворюють це на an NSAttributedString використовуючи індекси, включені в кожну сутність. Ось джерело того, як Cheddar для iOS робить це в Objective-C.

Ми також використовуємо Quesadilla в Seesaw (моя щоденна робота). У нас там теж дуже добре працює.

Quesadilla підтримує вилучення наступного:

  • Розмітка (курсив, жирний, жирний курсив, закреслення, код і посилання)
  • Посилання
  • Названий Emoji
  • Хештеги
  • Згадки користувачів

Ось невеликий приклад того, як виглядає хештег:

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)
#     }
#   )
# }

Ви навіть можете надати спеціальний валідатор користувача:

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`

У будь-якому випадку Кесаділья робить багато речей. Перегляньте readme, щоб дізнатися більше, або прочитайте документацію. Він протестований на Ruby 1.9.2, Ruby 1.9.3, Ruby 2.0.0, JRuby 1.7.2 (режим 1.9) і Rubinius 2.0.0 (режим 1.9), тож він повинен працювати для вас.

Підніміть мене в Twitter якщо ви вважаєте це корисним. Насолоджуйтесь!





Source link

Postagens Similares

Deixe um comentário

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