summaryrefslogtreecommitdiff
path: root/lib/rdoc/rd.rb
diff options
context:
space:
mode:
authordrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-27 04:28:14 +0000
committerdrbrain <drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2012-11-27 04:28:14 +0000
commit1c279a7d2753949c725754e1302f791b76358114 (patch)
tree36aa3bdde250e564445eba5f2e25fcb96bcb6cef /lib/rdoc/rd.rb
parentc72f0daa877808e4fa5018b3191ca09d4b97c03d (diff)
* lib/rdoc*: Updated to RDoc 4.0 (pre-release)
* bin/rdoc: ditto * test/rdoc: ditto * NEWS: Updated with RDoc 4.0 information git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37889 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rdoc/rd.rb')
-rw-r--r--lib/rdoc/rd.rb99
1 files changed, 99 insertions, 0 deletions
diff --git a/lib/rdoc/rd.rb b/lib/rdoc/rd.rb
new file mode 100644
index 0000000000..28c5d286e0
--- /dev/null
+++ b/lib/rdoc/rd.rb
@@ -0,0 +1,99 @@
+##
+# RDoc::RD implements the RD format from the rdtool gem.
+#
+# To choose RD as your only default format see
+# RDoc::Options@Saved+Options for instructions on setting up a
+# <code>.doc_options</code> file to store your project default.
+#
+# == LICENSE
+#
+# The grammar that produces RDoc::RD::BlockParser and RDoc::RD::InlineParser
+# is included in RDoc under the Ruby License.
+#
+# You can find the original source for rdtool at
+# https://github.com/uwabami/rdtool/
+#
+# You can use, re-distribute or change these files under Ruby's License or GPL.
+#
+# 1. You may make and give away verbatim copies of the source form of the
+# software without restriction, provided that you duplicate all of the
+# original copyright notices and associated disclaimers.
+#
+# 2. You may modify your copy of the software in any way, provided that
+# you do at least ONE of the following:
+#
+# a. place your modifications in the Public Domain or otherwise
+# make them Freely Available, such as by posting said
+# modifications to Usenet or an equivalent medium, or by allowing
+# the author to include your modifications in the software.
+#
+# b. use the modified software only within your corporation or
+# organization.
+#
+# c. give non-standard binaries non-standard names, with
+# instructions on where to get the original software distribution.
+#
+# d. make other distribution arrangements with the author.
+#
+# 3. You may distribute the software in object code or binary form,
+# provided that you do at least ONE of the following:
+#
+# a. distribute the binaries and library files of the software,
+# together with instructions (in the manual page or equivalent)
+# on where to get the original distribution.
+#
+# b. accompany the distribution with the machine-readable source of
+# the software.
+#
+# c. give non-standard binaries non-standard names, with
+# instructions on where to get the original software distribution.
+#
+# d. make other distribution arrangements with the author.
+#
+# 4. You may modify and include the part of the software into any other
+# software (possibly commercial). But some files in the distribution
+# are not written by the author, so that they are not under these terms.
+#
+# For the list of those files and their copying conditions, see the
+# file LEGAL.
+#
+# 5. The scripts and library files supplied as input to or produced as
+# output from the software do not automatically fall under the
+# copyright of the software, but belong to whomever generated them,
+# and may be sold commercially, and may be aggregated with this
+# software.
+#
+# 6. THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+# PURPOSE.
+
+class RDoc::RD
+
+ ##
+ # Parses +rd+ source and returns an RDoc::Markup::Document. If the
+ # <tt>=begin</tt> or <tt>=end</tt> lines are missing they will be added.
+
+ def self.parse rd
+ rd = rd.lines.to_a
+
+ if rd.find { |i| /\S/ === i } and !rd.find{|i| /^=begin\b/ === i } then
+ rd.unshift("=begin\n").push("=end\n")
+ end
+
+ parser = RDoc::RD::BlockParser.new
+ document = parser.parse rd
+
+ # isn't this always true?
+ document.parts.shift if RDoc::Markup::BlankLine === document.parts.first
+ document.parts.pop if RDoc::Markup::BlankLine === document.parts.last
+
+ document
+ end
+
+ autoload :BlockParser, 'rdoc/rd/block_parser'
+ autoload :InlineParser, 'rdoc/rd/inline_parser'
+ autoload :Inline, 'rdoc/rd/inline'
+
+end
+