Как получить доступ к параметрам ha sh в директории lib 6 - PullRequest
0 голосов
/ 22 января 2020

В моем приложении rails я использую Kramdown для разбора Markdown. Я хочу расширить функциональность метода convert_a в конвертере HTML. Частично это включает доступ к базе данных, но это зависит от параметра в URL. Поскольку я не вызываю метод, который переопределяю напрямую, я не могу просто передать метод params га sh. Есть ли способ получить доступ к этому ha sh, или даже просто получить текущий URL в модуле в каталоге lib?

, чтобы дать немного больше контекста, вызов метода находится во вспомогательном методе здесь:

# in app/helpers/myhelper.rb

def to_html(text)
     Kramdown::Document.new(text, parse_block_html: true).to_custom_html
end

и вот файл, в котором я переопределяю convert_a:

# in lib/custom_html.rb

class CustomHtml < Kramdown::Converter::Html
    def convert_a(el, indent)
        # use params[:foo] to make query
        format_as_span_html(el.type, el.attr, inner(el, indent))
    end
end

Редактировать:

Чтобы дать немного больше информации о том, где переопределенный метод вызывается. Я не очень хорошо знаком с кодовой базой Kramdown, однако кажется, что когда вызывается to_custom_html, следующий бит кода запускается внутри Kramdown.rb:

output, warnings = Converter.const_get(name).convert(@root, @options)

, который впоследствии вызывает convert_#{el.type} на внутренние элементы kramdown.

1 Ответ

0 голосов
/ 30 января 2020

Вы можете передать дополнительные опции в Kramdown::Document#new, поэтому просто сделайте что-то вроде Kramdown::Document.new(text, my_params: params). Затем вы можете использовать #options метод конвертера для доступа к вашим параметрам.

...