Sha256: 3e1fa2fece3261b367f7a8dc20eeb33c8df6f6b2ae50014ab2c8a5fdd388bb94

Contents?: true

Size: 1.44 KB

Versions: 4

Compression:

Stored size: 1.44 KB

Contents

module Opener
  class KafNafParser
    ##
    # CLI wrapper around {Opener::KafNafParser} using Slop.
    #
    # @!attribute [r] parser
    #  @return [Slop]
    #
    class CLI
      attr_reader :parser

      def initialize
        @parser = configure_slop
      end

      ##
      # @param [Array] argv
      #
      def run(argv = ARGV)
        parser.parse(argv)
      end

      ##
      # @return [Slop]
      #
      def configure_slop
        return Slop.new(:strict => false, :indent => 2, :help => true) do
          banner 'Usage: kaf-naf-parser [OPTIONS]'

          separator <<-EOF.chomp

About:

    Component for converting KAF documents to NAF documents and vice-versa.
    This command reads input from STDIN.

Example:

    cat some_file.kaf | kaf-naf-parser --tonaf
          EOF

          separator "\nOptions:\n"

          on :v, :version, 'Shows the current version' do
            abort "kaf-naf-parser v#{VERSION} on #{RUBY_DESCRIPTION}"
          end

          on :k, :tokaf, 'Converts NAF to KAF'
          on :n, :tonaf, 'Converts KAF to NAF'

          run do |opts, args|
            conversion = opts[:tonaf] ? 'to-naf' : 'to-kaf'
            parser     = KafNafParser.new(
              :args       => args,
              :conversion => conversion
            )

            input = STDIN.tty? ? nil : STDIN.read

            puts parser.run(input)
          end
        end
      end
    end # CLI
  end # KafNafParser
end # Opener

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
opener-kaf-naf-parser-2.0.3 lib/opener/kaf_naf_parser/cli.rb
opener-kaf-naf-parser-2.0.2 lib/opener/kaf_naf_parser/cli.rb
opener-kaf-naf-parser-2.0.1 lib/opener/kaf_naf_parser/cli.rb
opener-kaf-naf-parser-2.0.0 lib/opener/kaf_naf_parser/cli.rb