aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-23 12:40:16 +0000
committerknu <knu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2016-09-23 12:40:16 +0000
commit116b3c8ac38dc34ee596ef319d39aabf60faa5a2 (patch)
treed42bb38d069b8fb66b8ab47de939e4b457b40bb8
parent50d86fd7c1aa859fbdf4568894b0062b9a14c87f (diff)
downloadruby-116b3c8ac38dc34ee596ef319d39aabf60faa5a2.tar.gz
Add support for the `Lk` macro to tool/mdoc2man.rb
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56218 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--ChangeLog8
-rwxr-xr-xtool/mdoc2man.rb52
2 files changed, 50 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 8d4752ef3f..c8485de275 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Fri Sep 23 21:38:58 2016 Akinori MUSHA <knu@iDaemons.org>
+
+ * tool/mdoc2man.rb (Mdoc2Man#parse_macro): Add support for the
+ `Lk` macro.
+
+ * tool/mdoc2man.rb (Mdoc2Man#shift_arg): A new function to extract
+ a possibly quoted argument.
+
Fri Sep 23 20:36:05 2016 Shugo Maeda <shugo@ruby-lang.org>
* eval.c (rb_mod_refine): refine modules as well.
diff --git a/tool/mdoc2man.rb b/tool/mdoc2man.rb
index 610feac73d..e005fcf19a 100755
--- a/tool/mdoc2man.rb
+++ b/tool/mdoc2man.rb
@@ -82,6 +82,24 @@ class Mdoc2Man
initialize
end
+ def shift_arg(words)
+ case words[0]
+ when nil, RE_PUNCT
+ nil
+ when /\A"(.+)/
+ words.shift
+ word = $1
+ loop {
+ break if word.chomp!('"')
+ token = words.shift or break
+ word << ' ' << token
+ }
+ word
+ else
+ words.shift
+ end
+ end
+
def parse_macro(line)
words = line.split
retval = ''
@@ -320,15 +338,29 @@ class Mdoc2Man
next
end
- if word == 'Pa' && !quote.include?(OPTION)
- retval << '\\fI'
- retval << '\\&' if /^\./ =~ words[0]
- retval << words.shift << '\\fP'
- while RE_PUNCT =~ words[0]
- retval << words.shift
- end
- # @nospace = 1 if @nospace == 0 && RE_PUNCT =~ words[0]
- next
+ case word
+ when 'Pa'
+ if !quote.include?(OPTION)
+ retval << '\\fI'
+ retval << '\\&' if /^\./ =~ words[0]
+ retval << words.shift << '\\fP'
+ while RE_PUNCT =~ words[0]
+ retval << words.shift
+ end
+ # @nospace = 1 if @nospace == 0 && RE_PUNCT =~ words[0]
+ next
+ end
+ when 'Lk'
+ if !quote.include?(OPTION)
+ url = words.shift
+ if name = shift_arg(words)
+ retval << '\\fI' << name << ':\\fP '
+ end
+ retval << '\\fB'
+ retval << '\\&' if /\A\./ =~ url
+ retval << url << '\\fP'
+ next
+ end
end
case word
@@ -408,7 +440,7 @@ class Mdoc2Man
# tags
retval << ".TP\n"
case words[0]
- when 'Pa', 'Ev'
+ when 'Pa', 'Ev', 'Lk'
words.shift
retval << '.B'
end