Sha256: a6cdfb40f85b69779cdb6743446911241a55443939aa8a9fd7bbce30d22ed7a1

Contents?: true

Size: 1.61 KB

Versions: 2

Compression:

Stored size: 1.61 KB

Contents

require 'pathname'
require 'erb'
require 'find'
require 'pp'
require 'optparse'
require 'yaml'

require 'bitclust'
require 'bitclust/subcommand'

module BitClust::Subcommands
  class ListCommand < BitClust::Subcommand
    def initialize
      @mode = nil
      @parser = OptionParser.new {|opt|
        opt.banner = "Usage: #{File.basename($0, '.*')} list (--library|--class|--method|--function)"
        opt.on('--library', 'List libraries.') {
          @mode = :library
        }
        opt.on('--class', 'List classes.') {
          @mode = :class
        }
        opt.on('--method', 'List methods.') {
          @mode = :method
        }
        opt.on('--function', 'List functions.') {
          @mode = :function
        }
        opt.on('--help', 'Prints this message and quit.') {
          puts opt.help
          exit 0
        }
      }
    end

    def parse(argv)
      super
      unless @mode
        error 'one of (--library|--class|--method|--function) is required'
      end
    end

    def exec(db, argv)
      case @mode
      when :library
        db.libraries.map {|lib| lib.name }.sort.each do |name|
          puts name
        end
      when :class
        db.classes.map {|c| c.name }.sort.each do |name|
          puts name
        end
      when :method
        db.classes.sort_by {|c| c.name }.each do |c|
          c.entries.sort_by {|m| m.id }.each do |m|
            puts m.label
          end
        end
      when :function
        db.functions.sort_by {|f| f.name }.each do |f|
          puts f.name
        end
      else
        raise "must not happen: @mode=#{@mode.inspect}"
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bitclust-core-0.6.0 lib/bitclust/subcommands/list_command.rb
bitclust-core-0.5.5 lib/bitclust/subcommands/list_command.rb