Представляємо Кесаділью — Сем Софес
Опубліковано на
Я вже деякий час думав про те, щоб зробити цей дорогоцінний камінь 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 якщо ви вважаєте це корисним. Насолоджуйтесь!
