vimgolf 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 245e3a61f0627829065d771884195716aaa714ec
4
- data.tar.gz: e8439584ea6e438dbe76b55cff4feea1c9412dd1
3
+ metadata.gz: 24a1f46135142cd926424d0782923579bcb9ed4e
4
+ data.tar.gz: 20f684042ab81a94cb8160c19f3132a0e66c80c7
5
5
  SHA512:
6
- metadata.gz: 11fb7f11d157e664c09101f8496247a3d928126a88397954680271968705d4e1592e5a4609a5889e29dbc0e3b1b059acefc33935ba5de3f6fe2f413773ef4c02
7
- data.tar.gz: 10733f77b5228a25ba7f8ed0d3288dbf54b48b94be89d6a7dfb36f594287d1865e55111b97965d558cb9dd4edd1b4c052cf3af483998cd29e7beaf76d42babb8
6
+ metadata.gz: e00d25e7183ede50b50fb09a36a051c5d4c4f20c69b7aca76ed6e7e0a3521d9b545448f87f073426623e0a5820f34e5aabba0fdda0f5db0f161bdfb3c0b01a80
7
+ data.tar.gz: 5964d4d92b88122a4d2ddb6e0e472b70ec35eafaf866a3225e7694193770bcb021236efa81874b17c6f6086bd4e5037f24019f8c726c39a18199a6b5b064a4a0
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ pkg/*
2
2
  *.gem
3
3
  .bundle
4
4
  /emacs/*.elc
5
+ *.lock
data/lib/vimgolf.rb CHANGED
@@ -1,9 +1,12 @@
1
+ require 'rubygems'
1
2
  require 'fileutils'
2
3
  require 'net/http'
3
4
  require 'strscan'
4
5
  require 'json'
5
6
  require 'yaml'
6
7
  require 'thor'
8
+ require 'shellwords'
9
+ require 'tempfile'
7
10
 
8
11
  require 'vimgolf/version'
9
12
  require 'vimgolf/config'
@@ -1,6 +1,6 @@
1
1
  module VimGolf
2
2
  class Challenge
3
- attr_reader :id, :type
3
+ attr_reader :id, :type, :otype, :remote
4
4
 
5
5
  def self.path(path)
6
6
  @@path = path if path
@@ -11,7 +11,28 @@ module VimGolf
11
11
  @id = id
12
12
  end
13
13
 
14
+ def local(infile, outfile)
15
+ @remote = false
16
+ @input_path = File.expand_path(infile)
17
+ @output_path = File.expand_path(outfile)
18
+ @type = File.basename(@input_path) # extension? use the whole thing
19
+ @otype = File.basename(@output_path)
20
+
21
+ work_files
22
+ end
23
+
24
+ def work_files
25
+ @vimrc_path = File.expand_path('../vimgolf.vimrc', __FILE__)
26
+
27
+ # keep these temp files around so they don't close
28
+ @work = Tempfile.new(['vimgolf', ".#{@type}"])
29
+ @log = Tempfile.new('golflog')
30
+ @work_path = @work.path()
31
+ @log_path = @log.path()
32
+ end
33
+
14
34
  def download
35
+ @remote = true
15
36
  begin
16
37
  url = URI.parse("#{GOLFHOST}/challenges/#{@id}.json")
17
38
  req = Net::HTTP::Get.new(url.path)
@@ -34,9 +55,14 @@ module VimGolf
34
55
  @data['in']['data'].gsub!(/\r\n/, "\n")
35
56
  @data['out']['data'].gsub!(/\r\n/, "\n")
36
57
 
37
- @type = @data['in']['type']
58
+ # be sure to sanitize the types
59
+ @type = @data['in']['type'].gsub(/[^\w-]/, '.')
60
+ @otype = @data['out']['type'].gsub(/[^\w-]/, '.')
61
+ @input_path = path + ".input.#{@type}"
62
+ @output_path = path + ".output.#{@otype}"
63
+
38
64
  save
39
- start
65
+ work_files
40
66
  rescue Exception => e
41
67
  debug(e)
42
68
  raise "Uh oh, couldn't download or parse challenge, please verify your challenge id & client version."
@@ -44,13 +70,12 @@ module VimGolf
44
70
  end
45
71
 
46
72
  def start
47
- File.open(work_path, "w") {|f| f.puts @data['in']['data']}
73
+ FileUtils.cp(@input_path, @work_path)
48
74
  end
49
75
 
50
76
  def save
51
77
  File.open(input_path, "w") {|f| f.puts @data['in']['data']}
52
78
  File.open(output_path, "w") {|f| f.puts @data['out']['data']}
53
- File.open(vimrc_path, "w") {|f| f.puts @data['vimrc']}
54
79
  end
55
80
 
56
81
  def upload
@@ -78,11 +103,15 @@ module VimGolf
78
103
  end
79
104
  end
80
105
 
81
- def input_path; path + ".#{@type}"; end
82
- def work_path; path + ".work.#{@type}"; end
83
- def output_path; path + ".output"; end
84
- def log_path; path + ".log"; end
85
- def vimrc_path; path + ".golfrc"; end
106
+ attr_reader :input_path
107
+ attr_reader :work_path
108
+ attr_reader :output_path
109
+ attr_reader :log_path
110
+ attr_reader :vimrc_path
111
+
112
+ def correct?
113
+ FileUtils.compare_file(@work_path, @output_path)
114
+ end
86
115
 
87
116
  def path
88
117
  @@path + "/#{@id}"
data/lib/vimgolf/cli.rb CHANGED
@@ -2,7 +2,6 @@ module VimGolf
2
2
 
3
3
  GOLFDEBUG = ENV['GOLFDEBUG'].to_sym rescue false
4
4
  GOLFHOST = ENV['GOLFHOST'] || "http://www.vimgolf.com"
5
- GOLFDIFF = ENV['GOLFDIFF'] || 'diff'
6
5
  GOLFSHOWDIFF = ENV['GOLFSHOWDIFF'] || 'vim -d -n'
7
6
  GOLFVIM = ENV['GOLFVIM'] || 'vim'
8
7
  PROXY = ENV['http_proxy'] || ''
@@ -43,7 +42,12 @@ module VimGolf
43
42
  DESC
44
43
 
45
44
  def setup
46
- key = VimGolf.ui.ask "Please specify your VimGolf API key (register on vimgolf.com to get it):"
45
+ VimGolf.ui.info "\nLet's setup your VimGolf key..."
46
+ VimGolf.ui.warn "1) Open vimgolf.com in your browser."
47
+ VimGolf.ui.warn "2) Click \"Sign in with Twitter\"."
48
+ VimGolf.ui.warn "3) Once signed in, copy your key (black box, top right)."
49
+
50
+ key = VimGolf.ui.ask "\nPaste your VimGolf key:"
47
51
 
48
52
  if key =~ /[\w\d]{32}/
49
53
  FileUtils.mkdir_p Config.path
@@ -56,39 +60,69 @@ module VimGolf
56
60
  end
57
61
  end
58
62
 
59
- desc "put [ID]", "launch Vim session"
63
+ desc "put CHALLENGE_ID", "launch vimgolf.com challenge"
60
64
  long_desc <<-DESC
61
65
  Launch a VimGolf session for the specified challenge ID. To find a currently
62
66
  active challenge ID, please visit vimgolf.com!
63
67
  DESC
64
68
 
65
- def put(id = nil)
69
+ def put(id)
70
+ FileUtils.mkdir_p Config.put_path
66
71
  VimGolf.ui.warn "Downloading Vimgolf challenge: #{id}"
67
72
  VimGolf::Challenge.path(Config.put_path)
68
73
  challenge = Challenge.new(id)
69
74
  challenge.download
70
75
 
76
+ play(challenge)
77
+ end
78
+
79
+ desc "local INFILE OUTFILE", "launch local challenge"
80
+ long_desc <<-DESC
81
+ Launch a local VimGolf challenge. A temporary copy of INFILE is made; the original files will not be touched.
82
+ DESC
83
+
84
+ def local(infile, outfile)
85
+ # make sure our files are sane
86
+ if !(File.file?(infile) and File.file?(outfile))
87
+ VimGolf.ui.error "INFILE and OUTFILE must exist and be regular files."
88
+ exit 1
89
+ end
90
+
91
+ challenge = Challenge.new(infile) # use the filename as id
92
+ challenge.local(infile, outfile)
93
+
94
+ play(challenge)
95
+ end
96
+
97
+ private
98
+
99
+ def play(challenge)
71
100
  begin
72
- VimGolf.ui.warn "Launching VimGolf session for challenge: #{id}"
73
- # - n - no swap file, memory only editing
74
- # - +0 - always start on line 0
75
- # - --noplugin - don't load any plugins, lets be fair!
76
- # -i NONE - don't load .viminfo (for saved macros and the like)
77
- # - u - load vimgolf .vimrc to level the playing field
78
- vimcmd = "#{GOLFVIM} -Z -n --noplugin -i NONE +0 -u \"#{challenge.vimrc_path}\" -W \"#{challenge.log_path}\" \"#{challenge.work_path}\""
101
+ challenge.start
102
+ VimGolf.ui.warn "Launching VimGolf session for challenge: #{challenge.id}"
103
+ # -Z - restricted mode, utilities not allowed
104
+ # -n - no swap file, memory only editing
105
+ # --noplugin - don't load any plugins, lets be fair!
106
+ # --nofork - otherwise GOLFVIM=gvim forks and returns immediately
107
+ # -i NONE - don't load .viminfo (for saved macros and the like)
108
+ # +0 - always start on line 0
109
+ # -u vimrc - load vimgolf .vimrc to level the playing field
110
+ # -U NONE - don't load .gvimrc
111
+ # -W logfile - keylog file (overwrites if already exists)
112
+ vimcmd = GOLFVIM.shellsplit + %W{-Z -n --noplugin --nofork -i NONE +0 -u #{challenge.vimrc_path} -U NONE -W #{challenge.log_path} #{challenge.work_path}}
79
113
  debug(vimcmd)
80
- system(vimcmd)
114
+ system(*vimcmd) # assembled as an array, bypasses the shell
81
115
 
82
116
  if $?.exitstatus.zero?
83
- diff_files = "\"#{challenge.work_path}\" \"#{challenge.output_path}\""
84
- diff = `#{GOLFDIFF} #{diff_files}`
85
117
  log = Keylog.new(IO.read(challenge.log_path))
86
118
 
119
+ VimGolf.ui.info "\nHere are your keystrokes:"
120
+ VimGolf.ui.print_log log
121
+
87
122
  # Handle incorrect solutions
88
- if diff.size > 0
123
+ if !challenge.correct?()
89
124
  VimGolf.ui.error "\nUh oh, looks like your entry does not match the desired output."
90
125
  VimGolf.ui.error "Your score for this failed attempt was: #{log.score}"
91
-
92
126
  loop do
93
127
  VimGolf.ui.warn "[d] Show diff"
94
128
  VimGolf.ui.warn "[r] Retry the current challenge"
@@ -99,10 +133,9 @@ module VimGolf
99
133
  :choices => [:diff, :retry, :quit]
100
134
  when :diff
101
135
  VimGolf.ui.warn "Showing vimdiff of your attempt (left) and correct output (right)"
102
- system("#{GOLFSHOWDIFF} #{diff_files}")
136
+ system(*GOLFSHOWDIFF.shellsplit + [challenge.work_path, challenge.output_path])
103
137
  when :retry
104
138
  VimGolf.ui.warn "Retrying current challenge..."
105
- challenge.start
106
139
  raise RetryException
107
140
  when :quit
108
141
  raise Interrupt
@@ -114,23 +147,32 @@ module VimGolf
114
147
  VimGolf.ui.info "\nSuccess! Your output matches. Your score: #{log.score}"
115
148
 
116
149
  loop do
117
- VimGolf.ui.warn "[w] Upload result and retry the challenge"
118
- VimGolf.ui.warn "[x] Upload result and quit"
150
+ choices = []
151
+ begin
152
+ Config.load # raises error if user hasn't finished setup
153
+ choices = [:w, :x]
154
+ VimGolf.ui.warn "[w] Upload result and retry the challenge"
155
+ VimGolf.ui.warn "[x] Upload result and quit"
156
+ rescue
157
+ choices = [:setup]
158
+ VimGolf.ui.warn "[s] Set up vimgolf.com key to submit result"
159
+ end if challenge.remote
119
160
  VimGolf.ui.warn "[r] Do not upload result and retry the challenge"
120
161
  VimGolf.ui.warn "[q] Do not upload result and quit"
121
162
 
122
163
  case VimGolf.ui.ask_question "Choice> ",
123
164
  :type => :warn,
124
- :choices => [:w, :x, :retry, :quit]
165
+ :choices => choices + [:retry, :quit]
125
166
  when :w
126
167
  next unless upload?(challenge)
127
- challenge.start
128
168
  raise RetryException
129
169
  when :x
130
170
  next unless upload?(challenge)
131
171
  raise Interrupt
172
+ when :setup
173
+ setup
174
+ next # we can hopefully submit this time
132
175
  when :retry
133
- challenge.start
134
176
  raise RetryException
135
177
  when :quit
136
178
  raise Interrupt
@@ -139,7 +181,7 @@ module VimGolf
139
181
 
140
182
  else
141
183
  error = <<-MSG
142
- Uh oh, Vim did not exit properly.
184
+ Uh oh, Vim did not exit properly.
143
185
  Please ensure you can execute 'Vim' from the commandline.
144
186
  If the problem persists, please report the error on github.com/igrigorik/vimgolf
145
187
  MSG
@@ -158,8 +200,6 @@ module VimGolf
158
200
  VimGolf.ui.error "If the error persists, please report it to github.com/igrigorik/vimgolf"
159
201
  end
160
202
 
161
- private
162
-
163
203
  def upload?(challenge)
164
204
  VimGolf.ui.warn "Uploading to VimGolf..."
165
205
 
@@ -1,3 +1,5 @@
1
+ # encoding: UTF-8
2
+
1
3
  module VimGolf
2
4
  class Keylog
3
5
  include Enumerable
@@ -95,6 +97,27 @@ module VimGolf
95
97
  when "kB"; "<S-Tab>"
96
98
  when "\xffX"; "<C-@>"
97
99
 
100
+ # This is how you escape literal 0x80
101
+ when "\xfeX"; "<0x80>"
102
+
103
+ # These rarely-used modifiers should be combined with the next
104
+ # stroke (like <S-Space>), but let's put them here for now
105
+ when "\xfc\x02"; "<S->"
106
+ when "\xfc\x04"; "<C->"
107
+ when "\xfc\x06"; "<C-S->"
108
+ when "\xfc\x08"; "<A->"
109
+ when "\xfc\x0a"; "<A-S->"
110
+ when "\xfc\x0c"; "<C-A>"
111
+ when "\xfc\x0e"; "<C-A-S->"
112
+ when "\xfc\x10"; "<M->"
113
+ when "\xfc\x12"; "<M-S->"
114
+ when "\xfc\x14"; "<M-C->"
115
+ when "\xfc\x16"; "<M-C-S->"
116
+ when "\xfc\x18"; "<M-A->"
117
+ when "\xfc\x1a"; "<M-A-S->"
118
+ when "\xfc\x1c"; "<M-C-A>"
119
+ when "\xfc\x1e"; "<M-C-A-S->"
120
+
98
121
  when "\xfd\x4"; "<S-Up>"
99
122
  when "\xfd\x5"; "<S-Down>"
100
123
  when "\xfd\x6"; "<S-F1>"
@@ -144,7 +167,7 @@ module VimGolf
144
167
  when "\xfd\x32"; "<RightMouse>"
145
168
  when "\xfd\x33"; "<RightDrag>"
146
169
  when "\xfd\x34"; "<RightRelease>"
147
- #when "\xfd\x35"; "KE_IGNORE"
170
+ when "\xfd\x35"; nil # KE_IGNORE
148
171
  #when "\xfd\x36"; "KE_TAB"
149
172
  #when "\xfd\x37"; "KE_S_TAB_OLD"
150
173
  #when "\xfd\x38"; "KE_SNIFF"
@@ -166,18 +189,28 @@ module VimGolf
166
189
  #when "\xfd\x48"; "KE_S_XF2"
167
190
  #when "\xfd\x49"; "KE_S_XF3"
168
191
  #when "\xfd\x4a"; "KE_S_XF4"
169
- when "\xfd\x4b"; "<MouseDown>"
170
- when "\xfd\x4c"; "<MouseUp>"
171
- when "\xfd\x4d"; "<MouseLeft>"
172
- when "\xfd\x4e"; "<MouseRight>"
173
- #when "\xfd\x4f"; "KE_KINS"
174
- #when "\xfd\x50"; "KE_KDEL"
175
- #when "\xfd\x51"; "KE_CSI"
192
+ when "\xfd\x4b"; "<ScrollWheelUp>"
193
+ when "\xfd\x4c"; "<ScrollWheelDown>"
194
+
195
+ # Horizontal scroll wheel support was added in Vim 7.3c. These
196
+ # 2 entries shifted the rest of the KS_EXTRA mappings down 2.
197
+ # Though Vim 7.2 is rare today, it was common soon after
198
+ # vimgolf.com was launched. In cases where the 7.3 code is
199
+ # never used but the 7.2 code was common, it makes sense to use
200
+ # the 7.2 code. There are conflicts though, so some legacy
201
+ # keycodes have to stay wrong.
202
+ when "\xfd\x4d"; "<ScrollWheelRight>"
203
+ when "\xfd\x4e"; "<ScrollWheelLeft>"
204
+ when "\xfd\x4f"; "<kInsert>"
205
+ when "\xfd\x50"; "<kDel>"
206
+ when "\xfd\x51"; "<0x9b>" # :help <CSI>
176
207
  #when "\xfd\x52"; "KE_SNR"
177
- #when "\xfd\x53"; "KE_PLUG"
178
- #when "\xfd\x54"; "KE_CMDWIN"
179
- when "\xfd\x55"; "<C-Left>"
180
- when "\xfd\x56"; "<C-Right>"
208
+ #when "\xfd\x53"; "KE_PLUG" # never used
209
+ when "\xfd\x53"; "<C-Left>" # 7.2 compat
210
+ #when "\xfd\x54"; "KE_CMDWIN" # never used
211
+ when "\xfd\x54"; "<C-Right>" # 7.2 compat
212
+ when "\xfd\x55"; "<C-Left>" # 7.2 <C-Home> conflict
213
+ when "\xfd\x56"; "<C-Right>" # 7.2 <C-End> conflict
181
214
  when "\xfd\x57"; "<C-Home>"
182
215
  when "\xfd\x58"; "<C-End>"
183
216
  #when "\xfd\x59"; "KE_X1MOUSE"
@@ -186,8 +219,10 @@ module VimGolf
186
219
  #when "\xfd\x5c"; "KE_X2MOUSE"
187
220
  #when "\xfd\x5d"; "KE_X2DRAG"
188
221
  #when "\xfd\x5e"; "KE_X2RELEASE"
222
+ when "\xfd\x5e"; nil # 7.2 compat (I think?)
189
223
  #when "\xfd\x5f"; "KE_DROP"
190
- #when "\xfd\x5e"; "KE_CURSORHOLD"
224
+ #when "\xfd\x60"; "KE_CURSORHOLD"
225
+ when "\xfd\x60"; nil # 7.2 Focus Gained compat
191
226
  #when "\xfd\x61"; "KE_NOP"
192
227
  when "\xfd\x62"; nil # Focus Gained (GVIM)
193
228
  when "\xfd\x63"; nil # Focus Lost (GVIM)
@@ -197,6 +232,9 @@ module VimGolf
197
232
  '<%02x-%02x>' % code.unpack('CC')
198
233
  end
199
234
 
235
+ # Printable ASCII
236
+ when 32..126; c
237
+
200
238
  # Control characters with special names
201
239
  when 0; "<Nul>"
202
240
  when 9; "<Tab>"
@@ -204,13 +242,8 @@ module VimGolf
204
242
  when 13; "<CR>"
205
243
  when 27; "<Esc>"
206
244
 
207
- when 127; "<Del>"
208
-
209
- # Otherwise, use <C-x> format
210
- when 0..31; "<C-#{(n + 64).chr}>"
211
-
212
- # The rest of ANSI is printable
213
- when 32..126; c
245
+ # Otherwise, use <C-x> format. Flip bit 7
246
+ when 0..127; "<C-#{(n ^ 0x40).chr}>"
214
247
 
215
248
  else
216
249
  #puts "Unexpected extended ASCII: #{'%#04x' % n}"
data/lib/vimgolf/ui.rb CHANGED
@@ -40,6 +40,18 @@ module VimGolf
40
40
  end
41
41
  end
42
42
 
43
+ # Take list of keystrokes, pretty-print them
44
+ def print_log(strokes)
45
+ strokes.each do |stroke|
46
+ if stroke.length == 1 # not a special character
47
+ say stroke, color=nil, force_new_line=false
48
+ else
49
+ say stroke, color=:red, force_new_line=false
50
+ end
51
+ end
52
+ say
53
+ end
54
+
43
55
  def debug(name, message = nil)
44
56
  return unless ENV["DEBUG"]
45
57
 
@@ -127,7 +139,7 @@ module VimGolf
127
139
  print_table(table, :ident => 2, :truncate => true, :colwidth => 20)
128
140
  end
129
141
 
130
- def set_color(string, color, bold=false)
142
+ def set_color(string, *colors)
131
143
  ($stdout.tty? || ENV['THOR_SHELL']) ? super : string
132
144
  end
133
145
 
@@ -1,3 +1,3 @@
1
1
  module Vimgolf
2
- VERSION = "0.4.6"
2
+ VERSION = "0.4.7"
3
3
  end
@@ -0,0 +1,28 @@
1
+ " http://vimdoc.sourceforge.net/htmldoc/starting.html#vimrc
2
+
3
+ set nocompatible " use vim defaults
4
+ set scrolloff=3 " keep 3 lines when scrolling
5
+ set ai " set auto-indenting on for programming
6
+
7
+ set showcmd " display incomplete commands
8
+ set nobackup " do not keep a backup file
9
+ set number " show line numbers
10
+ set ruler " show the current row and column
11
+
12
+ set hlsearch " highlight searches
13
+ set incsearch " do incremental searching
14
+ set showmatch " jump to matches when entering regexp
15
+ set ignorecase " ignore case when searching
16
+ set smartcase " no ignorecase if Uppercase char present
17
+
18
+ set visualbell t_vb= " turn off error beep/flash
19
+ set novisualbell " turn off visual bell
20
+
21
+ set backspace=indent,eol,start " make that backspace key work the way it should
22
+ set runtimepath=$VIMRUNTIME " turn off user scripts, https://github.com/igrigorik/vimgolf/issues/129
23
+
24
+ syntax on " turn syntax highlighting on by default
25
+ filetype on " detect type of file
26
+ filetype indent on " load indent file for specific file type
27
+
28
+ set t_RV= " http://bugs.debian.org/608242, http://groups.google.com/group/vim_dev/browse_thread/thread/9770ea844cec3282
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimgolf
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.6
4
+ version: 0.4.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ilya Grigorik
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-08-14 00:00:00.000000000 Z
11
+ date: 2015-01-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.14.6
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.14.6
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: json_pure
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: highline
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rspec
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: CLI client for vimgolf.com
@@ -88,11 +88,10 @@ executables:
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
- - .gitignore
92
- - .gitmodules
93
- - .rspec
91
+ - ".gitignore"
92
+ - ".gitmodules"
93
+ - ".rspec"
94
94
  - Gemfile
95
- - Gemfile.lock
96
95
  - README.md
97
96
  - Rakefile
98
97
  - bin/vimgolf
@@ -111,6 +110,7 @@ files:
111
110
  - lib/vimgolf/keylog.rb
112
111
  - lib/vimgolf/ui.rb
113
112
  - lib/vimgolf/version.rb
113
+ - lib/vimgolf/vimgolf.vimrc
114
114
  - spec/challenge_spec.rb
115
115
  - spec/cli_spec.rb
116
116
  - spec/fixtures/4d19832d8ae121365c00000b.log
@@ -127,7 +127,7 @@ metadata: {}
127
127
  post_install_message: |2
128
128
 
129
129
  ------------------------------------------------------------------------------
130
- Thank you for installing vimgolf-0.4.6.
130
+ Thank you for installing vimgolf-0.4.7.
131
131
 
132
132
  0.1.3: custom vimgolf .vimrc file to help level the playing field
133
133
  0.2.0: proxy support, custom diffs + proper vimscript parser/scoring
@@ -143,17 +143,17 @@ require_paths:
143
143
  - lib
144
144
  required_ruby_version: !ruby/object:Gem::Requirement
145
145
  requirements:
146
- - - '>='
146
+ - - ">="
147
147
  - !ruby/object:Gem::Version
148
148
  version: '0'
149
149
  required_rubygems_version: !ruby/object:Gem::Requirement
150
150
  requirements:
151
- - - '>='
151
+ - - ">="
152
152
  - !ruby/object:Gem::Version
153
153
  version: '0'
154
154
  requirements: []
155
155
  rubyforge_project: vimgolf
156
- rubygems_version: 2.0.14
156
+ rubygems_version: 2.4.3
157
157
  signing_key:
158
158
  specification_version: 4
159
159
  summary: CLI client for vimgolf.com
data/Gemfile.lock DELETED
@@ -1,30 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- vimgolf (0.4.0)
5
- highline
6
- thor (>= 0.14.6)
7
-
8
- GEM
9
- remote: http://rubygems.org/
10
- specs:
11
- diff-lcs (1.1.3)
12
- highline (1.6.11)
13
- rake (0.9.2.2)
14
- rspec (2.9.0)
15
- rspec-core (~> 2.9.0)
16
- rspec-expectations (~> 2.9.0)
17
- rspec-mocks (~> 2.9.0)
18
- rspec-core (2.9.0)
19
- rspec-expectations (2.9.0)
20
- diff-lcs (~> 1.1.3)
21
- rspec-mocks (2.9.0)
22
- thor (0.14.6)
23
-
24
- PLATFORMS
25
- ruby
26
-
27
- DEPENDENCIES
28
- rake
29
- rspec
30
- vimgolf!