Sha256: bb203f733f7a0831230131db64b02d803cbdfc246d8d621081dedf7f32ac8ca4

Contents?: true

Size: 1.43 KB

Versions: 1

Compression:

Stored size: 1.43 KB

Contents

# -*- coding: utf-8 -*-
require "optparse"
require "yaml"
require "my_help/version"


module SpecificHelp
  class Command

    def self.run(file,argv=[])
      new(file, argv).execute
    end

    def initialize(file,argv=[])
      @help_cont = YAML.load(File.read(file))
      @help_cont[:head].each{|line| print line }
      @argv = argv
    end

    def execute
      @argv << '--help' if @argv.size==0
      command_parser = OptionParser.new do |opt|
        opt.on('-v', '--version','show program Version.') { |v|
          opt.version = MyHelp::VERSION
          puts opt.ver
        }
        @help_cont.each_pair{|key,val|
          next if key==:head
          opts = val[:opts]
          opt.on(opts[:short],opts[:long],opts[:desc]) {disp_from_help_cont(key)}
        }
        opt.on('--to_hiki','convert to hikidoc format'){to_hiki}
      end
#      begin
        command_parser.parse!(@argv)
#      rescue=> eval
#       p eval
#      end
      exit
    end

    def to_hiki
      puts '<<<'
      @help_cont.each_pair{|key,val|
        if key==:head
          disp(val)
        else
          items =@help_cont[key]
          puts items[:title]
          disp(items[:cont])
        end
      }
      puts '>>>'
    end

    def disp(lines)
      lines.each{|line|
        puts "  #{line}"
      }
    end

    def disp_from_help_cont(key_word)
      items =@help_cont[key_word]
      puts items[:title]
      disp(items[:cont])
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
my_help-0.3.1 lib/specific_help.rb