diff --git a/lib/yard/templates/helpers/markup/rdoc_markdown.rb b/lib/yard/templates/helpers/markup/rdoc_markdown.rb index 03f9645fb..014e7827e 100644 --- a/lib/yard/templates/helpers/markup/rdoc_markdown.rb +++ b/lib/yard/templates/helpers/markup/rdoc_markdown.rb @@ -1,15 +1,12 @@ # frozen_string_literal: true +gem 'rdoc', '>= 6.0' +require 'rdoc' +require 'rdoc/markdown' + module YARD module Templates module Helpers module Markup - begin require 'rdoc'; rescue LoadError; nil end - begin - require 'rdoc/markdown' - rescue LoadError - raise NameError, "could not load RDoc Markdown support (rdoc is too old)" - end - class RDocMarkdown < RDocMarkup def initialize(text) super RDoc::Markdown.new.parse(text) diff --git a/lib/yard/templates/helpers/markup/rdoc_markup.rb b/lib/yard/templates/helpers/markup/rdoc_markup.rb index b65bf2fd5..d862ffb5a 100644 --- a/lib/yard/templates/helpers/markup/rdoc_markup.rb +++ b/lib/yard/templates/helpers/markup/rdoc_markup.rb @@ -1,37 +1,18 @@ # frozen_string_literal: true require 'thread' +gem 'rdoc', '>= 6.0' +require 'rdoc' +require 'rdoc/markup' +require 'rdoc/markup/to_html' + module YARD module Templates module Helpers module Markup - begin require 'rdoc'; rescue LoadError; nil end - begin - require 'rdoc/markup' - require 'rdoc/markup/to_html' - class RDocMarkup; MARKUP = RDoc::Markup end - class RDocMarkupToHtml < RDoc::Markup::ToHtml - if defined?(RDoc::VERSION) && RDoc::VERSION >= '4.0.0' && - defined?(RDoc::Options) - def initialize - options = RDoc::Options.new - options.pipe = true - super(options) - end - end - end - rescue LoadError - begin - require 'rdoc/markup/simple_markup' - require 'rdoc/markup/simple_markup/to_html' - class RDocMarkup; MARKUP = SM::SimpleMarkup end - class RDocMarkupToHtml < SM::ToHtml; end - rescue LoadError - raise NameError, "could not load RDocMarkup (rdoc is not installed)" - end - end - class RDocMarkup + MARKUP = RDoc::Markup + attr_accessor :from_path @@mutex = Mutex.new @@ -63,8 +44,6 @@ def to_html private # Fixes RDoc behaviour with ++ only supporting alphanumeric text. - # - # @todo Refactor into own SimpleMarkup subclass def fix_typewriter(text) code_tags = 0 text.gsub(%r{<(/)?(pre|code|tt)|(\s|^|>)\+(?! )([^\n\+]{1,900})(?! )\+}) do |str| @@ -82,18 +61,27 @@ def fix_typewriter(text) end end - # Don't allow -- to turn into — element. The chances of this being - # some --option is far more likely than the typographical meaning. - # - # @todo Refactor into own SimpleMarkup subclass + # Don't allow -- to turn into — element (em dash) def fix_dash_dash(text) text.gsub(/—(?=\S)/, '--') end end - class RDocMarkupToHtml + # Specialized ToHtml formatter for YARD + # + # @todo Refactor into own SimpleMarkup subclass + class RDocMarkupToHtml < RDoc::Markup::ToHtml attr_accessor :from_path + def initialize + options = RDoc::Options.new + options.pipe = true + super(options) + + # The hyperlink detection state + @hyperlink = false + end + # Disable auto-link of URLs def handle_special_HYPERLINK(special) # rubocop:disable Style/MethodName @hyperlink ? special.text : super diff --git a/yard.gemspec b/yard.gemspec index fa43eff9b..0f634c8ad 100644 --- a/yard.gemspec +++ b/yard.gemspec @@ -13,7 +13,7 @@ Gem::Specification.new do |s| s.version = YARD::VERSION s.author = "Loren Segal" s.email = "lsegal@soen.ca" - s.homepage = "http://yardoc.org" + s.homepage = "https://yardoc.org" s.platform = Gem::Platform::RUBY s.files = Dir['{lib,docs,po,templates}/**/*', '.yardopts*', 'CHANGELOG.md', 'LICENSE', 'LEGAL', 'README.md'] s.require_paths = ['lib']