Один из вариантов, который мне нравится, - написать общие методы в виде категории, а затем при необходимости смешать их с контроллерами. Он дает гораздо больше гибкости, чем наследование, имеет доступ к таким вещам, как params, а код прост и понятен.
Вот небольшой пример:
@Category(Object)
class MyControllerCategory {
def printParams() {
println params
}
}
@Mixin(MyControllerCategory)
class SomethingController {
def create = {
printParams()
...
}
def save = {
printParams()
}
}
Я считаю, что лучше использовать разметку вики. Вы можете попробовать пакет Mylyn Wikitext, который я в настоящее время с большим успехом использую для нашей системы документации.
Однако это не решение вашей проблемы, если вы пытаетесь автоматически проанализировать какой-то текст форума, который у вас уже есть: -I
Я считаю, что лучше использовать wiki markup
Если только у вас нет нетехнических пользователей, которые привыкли к bbcode и не очень заинтересованы в изучении другого тайного формата разметки.
Я успешно использовал регулярные выражения в прошлом для переключения между html и bbcode. Определите список выражений, охватывающих каждый тег, и предварительно скомпилируйте шаблоны для каждого из них. Затем итеративно преобразуйте строку с каждым выражением. Работает в обоих направлениях. Производительность на самом деле довольно хорошая, и вы можете легко адаптироваться к своему собственному диалекту / расширениям.
Обратной стороной является то, что с регулярными выражениями не всегда легко работать.