README.md in yard-0.9.18 vs README.md in yard-0.9.19
- old
+ new
@@ -1,328 +1,328 @@
-# YARD: Yay! A Ruby Documentation Tool
-
-[![Homepage](http://img.shields.io/badge/home-yardoc.org-blue.svg)](http://yardoc.org)
-[![GitHub](http://img.shields.io/badge/github-lsegal/yard-blue.svg)](http://github.com/lsegal/yard)
-[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://rubydoc.org/gems/yard/frames)
-
-[![Gem Version](https://badge.fury.io/rb/yard.svg)](http://github.com/lsegal/yard/releases)
-[![Build Status](https://travis-ci.org/lsegal/yard.svg?branch=master)](https://travis-ci.org/lsegal/yard)
-[![Coverage Status](https://coveralls.io/repos/github/lsegal/yard/badge.svg)](https://coveralls.io/github/lsegal/yard)
-[![License](http://img.shields.io/badge/license-MIT-yellowgreen.svg)](#license)
-
-## Synopsis
-
-YARD is a documentation generation tool for the Ruby programming language.
-It enables the user to generate consistent, usable documentation that can be
-exported to a number of formats very easily, and also supports extending for
-custom Ruby constructs such as custom class level definitions. Below is a
-summary of some of YARD's notable features.
-
-
-## Feature List
-
-**1. RDoc/SimpleMarkup Formatting Compatibility**: YARD is made to be compatible
-with RDoc formatting. In fact, YARD does no processing on RDoc documentation
-strings, and leaves this up to the output generation tool to decide how to
-render the documentation.
-
-**2. Yardoc Meta-tag Formatting Like Python, Java, Objective-C and other languages**:
-YARD uses a '@tag' style definition syntax for meta tags alongside regular code
-documentation. These tags should be able to happily sit side by side RDoc formatted
-documentation, but provide a much more consistent and usable way to describe
-important information about objects, such as what parameters they take and what types
-they are expected to be, what type a method should return, what exceptions it can
-raise, if it is deprecated, etc.. It also allows information to be better (and more
-consistently) organized during the output generation phase. You can find a list
-of tags in the {file:docs/Tags.md#taglist Tags.md} file.
-
-YARD also supports an optional "types" declarations for certain tags.
-This allows the developer to document type signatures for ruby methods and
-parameters in a non intrusive but helpful and consistent manner. Instead of
-describing this data in the body of the description, a developer may formally
-declare the parameter or return type(s) in a single line. Consider the
-following method documented with YARD formatting:
-
-```ruby
-# Reverses the contents of a String or IO object.
-#
-# @param contents [String, #read] the contents to reverse
-# @return [String] the contents reversed lexically
-def reverse(contents)
- contents = contents.read if contents.respond_to? :read
- contents.reverse
-end
-```
-
-With the above @param tag, we learn that the contents parameter can either be
-a String or any object that responds to the 'read' method, which is more
-powerful than the textual description, which says it should be an IO object.
-This also informs the developer that they should expect to receive a String
-object returned by the method, and although this may be obvious for a
-'reverse' method, it becomes very useful when the method name may not be as
-descriptive.
-
-**3. Custom Constructs and Extensibility of YARD**: YARD is designed to be
-extended and customized by plugins. Take for instance the scenario where you
-need to document the following code:
-
-```ruby
-class List
- # Sets the publisher name for the list.
- cattr_accessor :publisher
-end
-```
-
-This custom declaration provides dynamically generated code that is hard for a
-documentation tool to properly document without help from the developer. To
-ease the pains of manually documenting the procedure, YARD can be extended by
-the developer to handle the `cattr_accessor` construct and automatically create
-an attribute on the class with the associated documentation. This makes
-documenting external API's, especially dynamic ones, a lot more consistent for
-consumption by the users.
-
-YARD is also designed for extensibility everywhere else, allowing you to add
-support for new programming languages, new data structures and even where/how
-data is stored.
-
-**4. Raw Data Output**: YARD also outputs documented objects as raw data (the
-dumped Namespace) which can be reloaded to do generation at a later date, or
-even auditing on code. This means that any developer can use the raw data to
-perform output generation for any custom format, such as YAML, for instance.
-While YARD plans to support XHTML style documentation output as well as
-command line (text based) and possibly XML, this may still be useful for those
-who would like to reap the benefits of YARD's processing in other forms, such
-as throwing all the documentation into a database. Another useful way of
-exploiting this raw data format would be to write tools that can auto generate
-test cases, for example, or show possible unhandled exceptions in code.
-
-**5. Local Documentation Server**: YARD can serve documentation for projects
-or installed gems (similar to `gem server`) with the added benefit of dynamic
-searching, as well as live reloading. Using the live reload feature, you can
-document your code and immediately preview the results by refreshing the page;
-YARD will do all the work in re-generating the HTML. This makes writing
-documentation a much faster process.
-
-
-## Installing
-
-To install YARD, use the following command:
-
-```sh
-$ gem install yard
-```
-
-(Add `sudo` if you're installing under a POSIX system as root)
-
-Alternatively, if you've checked the source out directly, you can call
-`rake install` from the root project directory.
-
-**Important Note for Debian/Ubuntu users:** there's a possible chance your Ruby
-install lacks RDoc, which is occasionally used by YARD to convert markup to HTML.
-If running `which rdoc` turns up empty, install RDoc by issuing:
-
-```sh
-$ sudo apt-get install rdoc
-```
-
-
-## Usage
-
-There are a couple of ways to use YARD. The first is via command-line, and the
-second is the Rake task.
-
-**1. yard Command-line Tool**
-
-YARD comes packaged with a executable named `yard` which can control the many
-functions of YARD, including generating documentation, graphs running the
-YARD server, and so on. To view a list of available YARD commands, type:
-
-```sh
-$ yard --help
-```
-
-Plugins can also add commands to the `yard` executable to provide extra
-functionality.
-
-### Generating Documentation
-
-<span class="note">The `yardoc` executable is a shortcut for `yard doc`.</span>
-
-The most common command you will probably use is `yard doc`, or `yardoc`. You
-can type `yardoc --help` to see the options that YARD provides, but the
-easiest way to generate docs for your code is to simply type `yardoc` in your
-project root. This will assume your files are
-located in the `lib/` directory. If they are located elsewhere, you can specify
-paths and globs from the commandline via:
-
-```sh
-$ yardoc 'lib/**/*.rb' 'app/**/*.rb' ...etc...
-```
-
-The tool will generate a `.yardoc` file which will store the cached database
-of your source code and documentation. If you want to re-generate your docs
-with another template you can simply use the `--use-cache` (or -c)
-option to speed up the generation process by skipping source parsing.
-
-YARD will by default only document code in your public visibility. You can
-document your protected and private code by adding `--protected` or
-`--private` to the option switches. In addition, you can add `--no-private`
-to also ignore any object that has the `@private` meta-tag. This is similar
-to RDoc's ":nodoc:" behaviour, though the distinction is important. RDoc
-implies that the object with :nodoc: would not be documented, whereas
-YARD still recommends documenting private objects for the private API (for
-maintainer/developer consumption).
-
-You can also add extra informative files (README, LICENSE) by separating
-the globs and the filenames with '-'.
-
-```sh
-$ yardoc 'app/**/*.rb' - README LICENSE FAQ
-```
-
-If no globs precede the '-' argument, the default glob (`lib/**/*.rb`) is
-used:
-
-```sh
-$ yardoc - README LICENSE FAQ
-```
-
-Note that the README file can be specified with its own `--readme` switch.
-
-You can also add a `.yardopts` file to your project directory which lists
-the switches separated by whitespace (newlines or space) to pass to yardoc
-whenever it is run. A full overview of the `.yardopts` file can be found in
-{YARD::CLI::Yardoc}.
-
-### Queries
-
-The `yardoc` tool also supports a `--query` argument to only include objects
-that match a certain data or meta-data query. The query syntax is Ruby, though
-a few shortcuts are available. For instance, to document only objects that have
-an "@api" tag with the value "public", all of the following syntaxes would give
-the same result:
-
-```sh
---query '@api.text == "public"'
---query 'object.has_tag?(:api) && object.tag(:api).text == "public"'
---query 'has_tag?(:api) && tag(:api).text == "public"'
-```
-
-Note that the "@tag" syntax returns the first tag named "tag" on the object.
-To return the array of all tags named "tag", use "@@tag".
-
-Multiple `--query` arguments are allowed in the command line parameters. The
-following two lines both check for the existence of a return and param tag:
-
-```sh
---query '@return' --query '@param'
---query '@return && @param'
-```
-
-For more information about the query syntax, see the {YARD::Verifier} class.
-
-**2. Rake Task**
-
-The second most obvious is to generate docs via a Rake task. You can do this by
-adding the following to your `Rakefile`:
-
-```ruby
-YARD::Rake::YardocTask.new do |t|
- t.files = ['lib/**/*.rb', OTHER_PATHS] # optional
- t.options = ['--any', '--extra', '--opts'] # optional
- t.stats_options = ['--list-undoc'] # optional
-end
-```
-
-All the settings: `files`, `options` and `stats_options` are optional. `files` will default to
-`lib/**/*.rb`, `options` will represents any options you might want
-to add and `stats_options` will pass extra options to the stats command.
-Again, a full list of options is available by typing `yardoc --help`
-in a shell. You can also override the options at the Rake command-line with the
-OPTS environment variable:
-
-```sh
-$ rake yard OPTS='--any --extra --opts'
-```
-
-**3. `yri` RI Implementation**
-
-The yri binary will use the cached .yardoc database to give you quick ri-style
-access to your documentation. It's way faster than ri but currently does not
-work with the stdlib or core Ruby libraries, only the active project. Example:
-
-```sh
-$ yri YARD::Handlers::Base#register
-$ yri File.relative_path
-```
-
-Note that class methods must not be referred to with the "::" namespace
-separator. Only modules, classes and constants should use "::".
-
-You can also do lookups on any installed gems. Just make sure to build the
-.yardoc databases for installed gems with:
-
-```sh
-$ yard gems
-```
-
-If you don't have sudo access, it will write these files to your `~/.yard`
-directory. `yri` will also cache lookups there.
-
-**4. `yard server` Documentation Server**
-
-The `yard server` command serves documentation for a local project or all installed
-RubyGems. To serve documentation for a project you are working on, simply run:
-
-```sh
-$ yard server
-```
-
-And the project inside the current directory will be parsed (if the source has
-not yet been scanned by YARD) and served at [http://localhost:8808](http://localhost:8808).
-
-### Live Reloading
-
-If you want to serve documentation on a project while you document it so that
-you can preview the results, simply pass `--reload` (`-r`) to the above command
-and YARD will reload any changed files on each request. This will allow you to
-change any documentation in the source and refresh to see the new contents.
-
-### Serving Gems
-
-To serve documentation for all installed gems, call:
-
-```sh
-$ yard server --gems
-```
-
-This will also automatically build documentation for any gems that have not
-been previously scanned. Note that in this case there will be a slight delay
-between the first request of a newly parsed gem.
-
-
-**5. `yard graph` Graphviz Generator**
-
-You can use `yard graph` to generate dot graphs of your code. This, of course,
-requires [Graphviz](http://www.graphviz.org) and the `dot` binary. By default
-this will generate a graph of the classes and modules in the best UML2 notation
-that Graphviz can support, but without any methods listed. With the `--full`
-option, methods and attributes will be listed. There is also a `--dependencies`
-option to show mixin inclusions. You can output to stdout or a file, or pipe directly
-to `dot`. The same public, protected and private visibility rules apply to `yard graph`.
-More options can be seen by typing `yard graph --help`, but here is an example:
-
-```sh
-$ yard graph --protected --full --dependencies
-```
-
-
-## Changelog
-
-See {file:CHANGELOG.md} for a list of changes.
-
-## License
-
-YARD © 2007-2018 by [Loren Segal](mailto:lsegal@soen.ca). YARD is
-licensed under the MIT license except for some files which come from the
-RDoc/Ruby distributions. Please see the {file:LICENSE} and {file:LEGAL}
-documents for more information.
+# YARD: Yay! A Ruby Documentation Tool
+
+[![Homepage](http://img.shields.io/badge/home-yardoc.org-blue.svg)](http://yardoc.org)
+[![GitHub](http://img.shields.io/badge/github-lsegal/yard-blue.svg)](http://github.com/lsegal/yard)
+[![Documentation](http://img.shields.io/badge/docs-rdoc.info-blue.svg)](http://rubydoc.org/gems/yard/frames)
+
+[![Gem Version](https://badge.fury.io/rb/yard.svg)](http://github.com/lsegal/yard/releases)
+[![Build Status](https://travis-ci.org/lsegal/yard.svg?branch=master)](https://travis-ci.org/lsegal/yard)
+[![Coverage Status](https://coveralls.io/repos/github/lsegal/yard/badge.svg)](https://coveralls.io/github/lsegal/yard)
+[![License](http://img.shields.io/badge/license-MIT-yellowgreen.svg)](#license)
+
+## Synopsis
+
+YARD is a documentation generation tool for the Ruby programming language.
+It enables the user to generate consistent, usable documentation that can be
+exported to a number of formats very easily, and also supports extending for
+custom Ruby constructs such as custom class level definitions. Below is a
+summary of some of YARD's notable features.
+
+
+## Feature List
+
+**1. RDoc/SimpleMarkup Formatting Compatibility**: YARD is made to be compatible
+with RDoc formatting. In fact, YARD does no processing on RDoc documentation
+strings, and leaves this up to the output generation tool to decide how to
+render the documentation.
+
+**2. Yardoc Meta-tag Formatting Like Python, Java, Objective-C and other languages**:
+YARD uses a '@tag' style definition syntax for meta tags alongside regular code
+documentation. These tags should be able to happily sit side by side RDoc formatted
+documentation, but provide a much more consistent and usable way to describe
+important information about objects, such as what parameters they take and what types
+they are expected to be, what type a method should return, what exceptions it can
+raise, if it is deprecated, etc.. It also allows information to be better (and more
+consistently) organized during the output generation phase. You can find a list
+of tags in the {file:docs/Tags.md#taglist Tags.md} file.
+
+YARD also supports an optional "types" declarations for certain tags.
+This allows the developer to document type signatures for ruby methods and
+parameters in a non intrusive but helpful and consistent manner. Instead of
+describing this data in the body of the description, a developer may formally
+declare the parameter or return type(s) in a single line. Consider the
+following method documented with YARD formatting:
+
+```ruby
+# Reverses the contents of a String or IO object.
+#
+# @param contents [String, #read] the contents to reverse
+# @return [String] the contents reversed lexically
+def reverse(contents)
+ contents = contents.read if contents.respond_to? :read
+ contents.reverse
+end
+```
+
+With the above @param tag, we learn that the contents parameter can either be
+a String or any object that responds to the 'read' method, which is more
+powerful than the textual description, which says it should be an IO object.
+This also informs the developer that they should expect to receive a String
+object returned by the method, and although this may be obvious for a
+'reverse' method, it becomes very useful when the method name may not be as
+descriptive.
+
+**3. Custom Constructs and Extensibility of YARD**: YARD is designed to be
+extended and customized by plugins. Take for instance the scenario where you
+need to document the following code:
+
+```ruby
+class List
+ # Sets the publisher name for the list.
+ cattr_accessor :publisher
+end
+```
+
+This custom declaration provides dynamically generated code that is hard for a
+documentation tool to properly document without help from the developer. To
+ease the pains of manually documenting the procedure, YARD can be extended by
+the developer to handle the `cattr_accessor` construct and automatically create
+an attribute on the class with the associated documentation. This makes
+documenting external API's, especially dynamic ones, a lot more consistent for
+consumption by the users.
+
+YARD is also designed for extensibility everywhere else, allowing you to add
+support for new programming languages, new data structures and even where/how
+data is stored.
+
+**4. Raw Data Output**: YARD also outputs documented objects as raw data (the
+dumped Namespace) which can be reloaded to do generation at a later date, or
+even auditing on code. This means that any developer can use the raw data to
+perform output generation for any custom format, such as YAML, for instance.
+While YARD plans to support XHTML style documentation output as well as
+command line (text based) and possibly XML, this may still be useful for those
+who would like to reap the benefits of YARD's processing in other forms, such
+as throwing all the documentation into a database. Another useful way of
+exploiting this raw data format would be to write tools that can auto generate
+test cases, for example, or show possible unhandled exceptions in code.
+
+**5. Local Documentation Server**: YARD can serve documentation for projects
+or installed gems (similar to `gem server`) with the added benefit of dynamic
+searching, as well as live reloading. Using the live reload feature, you can
+document your code and immediately preview the results by refreshing the page;
+YARD will do all the work in re-generating the HTML. This makes writing
+documentation a much faster process.
+
+
+## Installing
+
+To install YARD, use the following command:
+
+```sh
+$ gem install yard
+```
+
+(Add `sudo` if you're installing under a POSIX system as root)
+
+Alternatively, if you've checked the source out directly, you can call
+`rake install` from the root project directory.
+
+**Important Note for Debian/Ubuntu users:** there's a possible chance your Ruby
+install lacks RDoc, which is occasionally used by YARD to convert markup to HTML.
+If running `which rdoc` turns up empty, install RDoc by issuing:
+
+```sh
+$ sudo apt-get install rdoc
+```
+
+
+## Usage
+
+There are a couple of ways to use YARD. The first is via command-line, and the
+second is the Rake task.
+
+**1. yard Command-line Tool**
+
+YARD comes packaged with a executable named `yard` which can control the many
+functions of YARD, including generating documentation, graphs running the
+YARD server, and so on. To view a list of available YARD commands, type:
+
+```sh
+$ yard --help
+```
+
+Plugins can also add commands to the `yard` executable to provide extra
+functionality.
+
+### Generating Documentation
+
+<span class="note">The `yardoc` executable is a shortcut for `yard doc`.</span>
+
+The most common command you will probably use is `yard doc`, or `yardoc`. You
+can type `yardoc --help` to see the options that YARD provides, but the
+easiest way to generate docs for your code is to simply type `yardoc` in your
+project root. This will assume your files are
+located in the `lib/` directory. If they are located elsewhere, you can specify
+paths and globs from the commandline via:
+
+```sh
+$ yardoc 'lib/**/*.rb' 'app/**/*.rb' ...etc...
+```
+
+The tool will generate a `.yardoc` file which will store the cached database
+of your source code and documentation. If you want to re-generate your docs
+with another template you can simply use the `--use-cache` (or -c)
+option to speed up the generation process by skipping source parsing.
+
+YARD will by default only document code in your public visibility. You can
+document your protected and private code by adding `--protected` or
+`--private` to the option switches. In addition, you can add `--no-private`
+to also ignore any object that has the `@private` meta-tag. This is similar
+to RDoc's ":nodoc:" behaviour, though the distinction is important. RDoc
+implies that the object with :nodoc: would not be documented, whereas
+YARD still recommends documenting private objects for the private API (for
+maintainer/developer consumption).
+
+You can also add extra informative files (README, LICENSE) by separating
+the globs and the filenames with '-'.
+
+```sh
+$ yardoc 'app/**/*.rb' - README LICENSE FAQ
+```
+
+If no globs precede the '-' argument, the default glob (`lib/**/*.rb`) is
+used:
+
+```sh
+$ yardoc - README LICENSE FAQ
+```
+
+Note that the README file can be specified with its own `--readme` switch.
+
+You can also add a `.yardopts` file to your project directory which lists
+the switches separated by whitespace (newlines or space) to pass to yardoc
+whenever it is run. A full overview of the `.yardopts` file can be found in
+{YARD::CLI::Yardoc}.
+
+### Queries
+
+The `yardoc` tool also supports a `--query` argument to only include objects
+that match a certain data or meta-data query. The query syntax is Ruby, though
+a few shortcuts are available. For instance, to document only objects that have
+an "@api" tag with the value "public", all of the following syntaxes would give
+the same result:
+
+```sh
+--query '@api.text == "public"'
+--query 'object.has_tag?(:api) && object.tag(:api).text == "public"'
+--query 'has_tag?(:api) && tag(:api).text == "public"'
+```
+
+Note that the "@tag" syntax returns the first tag named "tag" on the object.
+To return the array of all tags named "tag", use "@@tag".
+
+Multiple `--query` arguments are allowed in the command line parameters. The
+following two lines both check for the existence of a return and param tag:
+
+```sh
+--query '@return' --query '@param'
+--query '@return && @param'
+```
+
+For more information about the query syntax, see the {YARD::Verifier} class.
+
+**2. Rake Task**
+
+The second most obvious is to generate docs via a Rake task. You can do this by
+adding the following to your `Rakefile`:
+
+```ruby
+YARD::Rake::YardocTask.new do |t|
+ t.files = ['lib/**/*.rb', OTHER_PATHS] # optional
+ t.options = ['--any', '--extra', '--opts'] # optional
+ t.stats_options = ['--list-undoc'] # optional
+end
+```
+
+All the settings: `files`, `options` and `stats_options` are optional. `files` will default to
+`lib/**/*.rb`, `options` will represents any options you might want
+to add and `stats_options` will pass extra options to the stats command.
+Again, a full list of options is available by typing `yardoc --help`
+in a shell. You can also override the options at the Rake command-line with the
+OPTS environment variable:
+
+```sh
+$ rake yard OPTS='--any --extra --opts'
+```
+
+**3. `yri` RI Implementation**
+
+The yri binary will use the cached .yardoc database to give you quick ri-style
+access to your documentation. It's way faster than ri but currently does not
+work with the stdlib or core Ruby libraries, only the active project. Example:
+
+```sh
+$ yri YARD::Handlers::Base#register
+$ yri File.relative_path
+```
+
+Note that class methods must not be referred to with the "::" namespace
+separator. Only modules, classes and constants should use "::".
+
+You can also do lookups on any installed gems. Just make sure to build the
+.yardoc databases for installed gems with:
+
+```sh
+$ yard gems
+```
+
+If you don't have sudo access, it will write these files to your `~/.yard`
+directory. `yri` will also cache lookups there.
+
+**4. `yard server` Documentation Server**
+
+The `yard server` command serves documentation for a local project or all installed
+RubyGems. To serve documentation for a project you are working on, simply run:
+
+```sh
+$ yard server
+```
+
+And the project inside the current directory will be parsed (if the source has
+not yet been scanned by YARD) and served at [http://localhost:8808](http://localhost:8808).
+
+### Live Reloading
+
+If you want to serve documentation on a project while you document it so that
+you can preview the results, simply pass `--reload` (`-r`) to the above command
+and YARD will reload any changed files on each request. This will allow you to
+change any documentation in the source and refresh to see the new contents.
+
+### Serving Gems
+
+To serve documentation for all installed gems, call:
+
+```sh
+$ yard server --gems
+```
+
+This will also automatically build documentation for any gems that have not
+been previously scanned. Note that in this case there will be a slight delay
+between the first request of a newly parsed gem.
+
+
+**5. `yard graph` Graphviz Generator**
+
+You can use `yard graph` to generate dot graphs of your code. This, of course,
+requires [Graphviz](http://www.graphviz.org) and the `dot` binary. By default
+this will generate a graph of the classes and modules in the best UML2 notation
+that Graphviz can support, but without any methods listed. With the `--full`
+option, methods and attributes will be listed. There is also a `--dependencies`
+option to show mixin inclusions. You can output to stdout or a file, or pipe directly
+to `dot`. The same public, protected and private visibility rules apply to `yard graph`.
+More options can be seen by typing `yard graph --help`, but here is an example:
+
+```sh
+$ yard graph --protected --full --dependencies
+```
+
+
+## Changelog
+
+See {file:CHANGELOG.md} for a list of changes.
+
+## License
+
+YARD © 2007-2018 by [Loren Segal](mailto:lsegal@soen.ca). YARD is
+licensed under the MIT license except for some files which come from the
+RDoc/Ruby distributions. Please see the {file:LICENSE} and {file:LEGAL}
+documents for more information.