lib/yard/templates/helpers/markup/rdoc_markup.rb in yard-0.9.16 vs lib/yard/templates/helpers/markup/rdoc_markup.rb in yard-0.9.17
- old
+ new
@@ -1,109 +1,109 @@
-# frozen_string_literal: true
-require 'thread'
-
-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
- attr_accessor :from_path
-
- @@formatter = nil
- @@markup = nil
- @@mutex = nil
-
- def initialize(text)
- @text = text
-
- @@formatter ||= RDocMarkupToHtml.new
- @@markup ||= MARKUP.new
- @@mutex ||= Mutex.new
- end
-
- def to_html
- html = nil
- @@mutex.synchronize do
- @@formatter.from_path = from_path
- html = @@markup.convert(@text, @@formatter)
- end
- html = fix_dash_dash(html)
- html = fix_typewriter(html)
- html
- end
-
- 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|
- closed = $1
- tag = $2
- first_text = $3
- type_text = $4
-
- if tag
- code_tags += (closed ? -1 : 1)
- next str
- end
- next str unless code_tags == 0
- first_text + '<tt>' + type_text + '</tt>'
- 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
- def fix_dash_dash(text)
- text.gsub(/—(?=\S)/, '--')
- end
- end
-
- class RDocMarkupToHtml
- attr_accessor :from_path
-
- # Disable auto-link of URLs
- def handle_special_HYPERLINK(special) # rubocop:disable Style/MethodName
- @hyperlink ? special.text : super
- end
-
- def accept_paragraph(*args)
- par = args.last
- text = par.respond_to?(:txt) ? par.txt : par.text
- @hyperlink = text =~ /\{(https?:|mailto:|link:|www\.)/ ? true : false
- super
- end
- end
- end
- end
- end
-end
+# frozen_string_literal: true
+require 'thread'
+
+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
+ attr_accessor :from_path
+
+ @@formatter = nil
+ @@markup = nil
+ @@mutex = nil
+
+ def initialize(text)
+ @text = text
+
+ @@formatter ||= RDocMarkupToHtml.new
+ @@markup ||= MARKUP.new
+ @@mutex ||= Mutex.new
+ end
+
+ def to_html
+ html = nil
+ @@mutex.synchronize do
+ @@formatter.from_path = from_path
+ html = @@markup.convert(@text, @@formatter)
+ end
+ html = fix_dash_dash(html)
+ html = fix_typewriter(html)
+ html
+ end
+
+ 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|
+ closed = $1
+ tag = $2
+ first_text = $3
+ type_text = $4
+
+ if tag
+ code_tags += (closed ? -1 : 1)
+ next str
+ end
+ next str unless code_tags == 0
+ first_text + '<tt>' + type_text + '</tt>'
+ 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
+ def fix_dash_dash(text)
+ text.gsub(/—(?=\S)/, '--')
+ end
+ end
+
+ class RDocMarkupToHtml
+ attr_accessor :from_path
+
+ # Disable auto-link of URLs
+ def handle_special_HYPERLINK(special) # rubocop:disable Style/MethodName
+ @hyperlink ? special.text : super
+ end
+
+ def accept_paragraph(*args)
+ par = args.last
+ text = par.respond_to?(:txt) ? par.txt : par.text
+ @hyperlink = text =~ /\{(https?:|mailto:|link:|www\.)/ ? true : false
+ super
+ end
+ end
+ end
+ end
+ end
+end