lib/yard/cli/graph.rb in yard-0.6.8 vs lib/yard/cli/graph.rb in yard-0.7.0
- old
+ new
@@ -1,50 +1,50 @@
module YARD
module CLI
# A command-line utility to generate Graphviz graphs from
# a set of objects
- #
+ #
# @see Graph#run
# @since 0.6.0
class Graph < Command
# The options parsed out of the commandline.
# Default options are:
# :format => :dot
attr_reader :options
-
+
# The set of objects to include in the graph.
attr_reader :objects
# Creates a new instance of the command-line utility
def initialize
super
@serializer = YARD::Serializers::StdoutSerializer.new
@options = SymbolHash[:format => :dot]
end
-
+
def description
"Graphs class diagram using Graphviz"
end
-
+
# Runs the command-line utility.
- #
+ #
# @example
# grapher = Graph.new
# grapher.run('--private')
# @param [Array<String>] args each tokenized argument
def run(*args)
Registry.load
optparse(*args)
-
+
contents = objects.map {|o| o.format(options) }.join("\n")
Templates::Engine.render(:format => :dot, :type => :layout,
:verifier => @verifier, :serializer => @serializer,
:contents => contents)
end
-
+
private
-
+
# Parses commandline options.
# @param [Array<String>] args each tokenized argument
def optparse(*args)
visibilities = []
opts = OptionParser.new
@@ -61,34 +61,34 @@
end
opts.on('-d', '--dependencies', 'Show mixins in dependency graph.') do
options[:dependencies] = true
end
-
- opts.on('--no-public', "Don't show public methods. (default shows public)") do
+
+ opts.on('--no-public', "Don't show public methods. (default shows public)") do
visibilities.delete(:public)
end
opts.on('--protected', "Show or don't show protected methods. (default hides protected)") do
visibilities.push(:protected)
end
- opts.on('--private', "Show or don't show private methods. (default hides private)") do
+ opts.on('--private', "Show or don't show private methods. (default hides private)") do
visibilities.push(:private)
end
opts.separator ""
opts.separator "Output options:"
opts.on('--dot [OPTIONS]', 'Send the results directly to `dot` with optional arguments.') do |dotopts|
@serializer = Serializers::ProcessSerializer.new('dot ' + dotopts.to_s)
end
-
+
opts.on('-f', '--file [FILE]', 'Writes output to a file instead of stdout.') do |file|
@serializer = Serializers::FileSystemSerializer.new(:basepath => '.', :extension => nil)
@serializer.instance_eval "def serialized_path(object) #{file.inspect} end"
end
-
+
common_options(opts)
parse_options(opts, args)
@verifier = Verifier.new("object.type != :method || #{visibilities.uniq.inspect}.include?(object.visibility)")
if args.first