Sha256: abef06bedc7ffcd306e1ad16be64a4548b62771caba0e822e27f35f6a7679da2

Contents?: true

Size: 1014 Bytes

Versions: 2

Compression:

Stored size: 1014 Bytes

Contents

module LearnOpen
  class ArgumentParser
    attr_reader :args

    def initialize(args)
      @args = args
    end

    def execute
      config_path = File.expand_path('~/.learn-config')
      editor_data = YAML.load(File.read(config_path))[:editor]
      if editor_data.match(/ /)
        editor_data = editor_data.split(' ').first
      end

      lesson = nil
      next_lesson = false

      configured_editor = !(editor_data.empty? || editor_data.nil?) ? editor_data : nil
      editor_specified = ARGV.detect {|arg| arg.start_with?('--editor=')}.match(/\-\-editor=(.+)/) || configured_editor
      open_after = !!editor_specified

      if !ARGV[0].start_with?('--editor=') && !ARGV[0].start_with?('--next')
        lesson = ARGV[0]
      elsif ARGV[0].start_with?('--next')
        next_lesson = true
      end

      if open_after
        editor_specified = editor_specified.is_a?(String) ? editor_specified : editor_specified[1]
      end

      [lesson, editor_specified, next_lesson]
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
learn-open-1.1.1 lib/learn_open/argument_parser.rb
learn-open-1.1.0 lib/learn_open/argument_parser.rb