Адаптируя ответ nhahtdh здесь здесь , все, что вам нужно сделать, это добавить шаг для подсчета подчеркивания (выполнено здесь с помощью str_count
) и вернуть среднее значение подчеркивания.
library(stringr)
strsplit(
strings,
paste0("^[^_]*(?:_[^_]*){", str_count(strings, '_') %/% 2, "}\\K_"),
perl = TRUE)
# [[1]]
# [1] "aa_bb_cc" "dd_ee_ff"
#
# [[2]]
# [1] "cc_hh" "ff_zz"
#
# [[3]]
# [1] "bb" "dd"
Необходимо записать собственный метод проверки, в который Вы инициализировали бы объект BlueCloth и попытались бы звонить to_html
метод ловя любое исключение. При ловле исключения, сбоев проверки, иначе оно должно быть в порядке.
В Вашей модели:
protected:
def validate
bc = BlueCloth.new(your_markdown_string_attribute)
begin
bc.to_html
rescue
errors.add(:your_markdown_string_attribute, 'has invalid markdown syntax')
end
end
Я провел немного исследования и решил использовать RDiscount вместо BlueCloth. RDiscount, кажется, намного быстрее и более надежен, чем BlueCloth.
Легко интегрировать RDiscount в Вашей среде направляющих. Включайте следующее, отрезанное в Ваш environment.rb
и Вы готовы пойти:
begin
require "rdiscount"
BlueCloth = RDiscount
rescue LoadError
# BlueCloth is still the our fallback,
# if RDiscount is not available
require 'bluecloth'
end
(протестированный с направляющими 2.2.0)