vimgolf-finder 0.1.4 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: af9d46c0aea441ce594d5d0285278dad74f9835d
4
- data.tar.gz: 426985ee72dd735fdd434c400b352e5aa2e1fdd5
2
+ SHA256:
3
+ metadata.gz: ecdf37d25dccd847f35afad840a47dc22c2f6cc149cddbc06613e6ac089e55a5
4
+ data.tar.gz: 19d602c1423e6c8f78f609d3981ecbed0cabcec5691f449261ac0a8b6c1977c7
5
5
  SHA512:
6
- metadata.gz: 16d3c3f2db7c206b0367fdb1fd4ac3fe58c25eaf26c522221d8f04fc544958e64b73ca4dcc53a927c845e65c6d63f2da1b814d75ff42da159ea78e56b1b9994c
7
- data.tar.gz: c8b60b2447eeac286d36de6c318b07e5db635dad22af9fa7f05f5289db5ae5b07c1af9243328ac2c2d7d3dc1c9adad92d579fd76940b1f2aaf76534fa7391fd3
6
+ metadata.gz: 8b9edd0609ab95167e65c79481df886d6478d534abbd05d0ba954f8a1d9f1bd3c1a2f12265fbb80fac8e694bbcfb94f5080400d7f0d7b48ac85c0a11b14f520c
7
+ data.tar.gz: 64dadc65b6e7588265c914acf241803a3132fc81862107f1cbcfd933d5cdbe8bc6d9f1b5fff287ba827bb81d962eefb9c8384ddb86e9d47595ff980378ea4100
data/README.md CHANGED
@@ -7,7 +7,7 @@ Simple VimGolf challenge finder. It just toy project for me! :smile:
7
7
  [![asciicast](https://asciinema.org/a/1whcqi8pjldxi767iiknqxeil.png)](https://asciinema.org/a/1whcqi8pjldxi767iiknqxeil)
8
8
 
9
9
  ## Installation
10
- Add this line to your application's Gemfile:
10
+ Paste this at a terminal prompt:
11
11
  ```
12
12
  $ gem install vimgolf-finder
13
13
  ```
@@ -18,6 +18,7 @@ Commands:
18
18
  vimgolf-finder help [COMMAND] # Describe available commands or one specific command
19
19
  vimgolf-finder list # Show VimGolf challenges
20
20
  vimgolf-finder random # Pick one at random from VimGolf challenges
21
+ vimgolf-finder solves # Show solved VimGolf challenges
21
22
  ```
22
23
 
23
24
  ### List 🔎
@@ -98,7 +99,22 @@ Do you want to play? (y/n) y
98
99
 
99
100
  Thanks for playing!
100
101
  Solves? (y/n) n
101
- $
102
+ ```
103
+
104
+ ### Solves 🔎
105
+ Show solved VimGolf challenges
106
+ ```
107
+ $ vimgolf-finder solves
108
+ 1. Simple, Practical, and Common - 7953 entries (55b18bbea9c2c30d04000001) [✓]
109
+ Choose challenge number. 1
110
+
111
+ Open your web browser? (y/n) y
112
+ Do you want to play? (y/n) y
113
+
114
+ # Playing VimGolf...
115
+
116
+ Thanks for playing!
117
+ Solves? (y/n) y
102
118
  ```
103
119
 
104
120
  ## TODO
@@ -6,7 +6,7 @@ module VimGolfFinder
6
6
 
7
7
  def print(index = 1)
8
8
  if self.solved?
9
- VimGolfFinder.ui.log "#{index}. \e[37m#{self.title}\e[0m - #{self.entries} entries (\e[33m#{self.id}\e[0m) [\u2713]"
9
+ VimGolfFinder.ui.log "#{index}. \e[37m#{self.title}\e[0m - #{self.entries} entries (\e[33m#{self.id}\e[0m) \e[32m[\u2713]\e[0m"
10
10
  else
11
11
  VimGolfFinder.ui.log "#{index}. \e[37m#{self.title}\e[0m - #{self.entries} entries (\e[33m#{self.id}\e[0m)"
12
12
  end
@@ -51,7 +51,7 @@ module VimGolfFinder
51
51
  File.new(path, File::CREAT|File::TRUNC|File::RDWR, 0644)
52
52
  end
53
53
 
54
- File.open(path, 'a') { |file| file.write(id) }
54
+ File.open(path, 'a') { |file| file.write("#{id}\n") }
55
55
  end
56
56
  end
57
57
  end
@@ -54,7 +54,7 @@ module VimGolfFinder
54
54
 
55
55
  number = VimGolfFinder.ui.ask 'Choose challenge number.'
56
56
  number = number.to_i
57
- if number.instance_of? Fixnum
57
+ if number.instance_of? Integer
58
58
  if number < 1 or number > limit
59
59
  VimGolfFinder.ui.error 'Invalid number'
60
60
  return
@@ -77,6 +77,35 @@ module VimGolfFinder
77
77
  play(id)
78
78
  end
79
79
 
80
+ desc 'solves', 'Show solved VimGolf challenges'
81
+ def solves
82
+ challenges = VimGolfFinder.parser.fetch_challenges
83
+
84
+ solved_challenges = []
85
+ challenges.each do |challenge|
86
+ if challenge.solved?
87
+ solved_challenges << challenge
88
+ end
89
+ end
90
+
91
+ solved_challenges.each_with_index do |challenge, index|
92
+ challenge.print(index+1)
93
+ end
94
+
95
+ number = VimGolfFinder.ui.ask 'Choose challenge number.'
96
+ number = number.to_i
97
+ if number.instance_of? Integer
98
+ if number < 1 or number > solved_challenges.count
99
+ VimGolfFinder.ui.error 'Invalid number'
100
+ return
101
+ end
102
+
103
+ id = challenges[number-1].id
104
+ print_challenge(id)
105
+ play(id)
106
+ end
107
+ end
108
+
80
109
  private
81
110
  def print_challenge(id)
82
111
  VimGolfFinder.ui.log ''
@@ -95,7 +124,10 @@ module VimGolfFinder
95
124
  result = VimGolfFinder.ui.ask 'Do you want to play? (y/n)'
96
125
 
97
126
  if result.eql?('y') || result.eql?('yes')
98
- system("vimgolf put #{id}")
127
+ if system("vimgolf put #{id}") == nil
128
+ VimGolfFinder.ui.error 'You need to install vimgolf. e.g. `gem install vimgolf`.'
129
+ return
130
+ end
99
131
 
100
132
  solves = VimGolfFinder.ui.ask 'Solves? (y/n)'
101
133
 
@@ -5,7 +5,7 @@ module VimGolfFinder
5
5
  def fetch_challenges
6
6
  challenges = []
7
7
 
8
- doc = Nokogiri::HTML(open(BASE_URL))
8
+ doc = Nokogiri::HTML(URI.open(BASE_URL))
9
9
  doc.css('.grid_7 > div').each do |div|
10
10
  challengeDOM = div.at_css('h5.challenge')
11
11
  aTAG = challengeDOM.at_css('a')
@@ -22,7 +22,7 @@ module VimGolfFinder
22
22
  def get_challenge(id)
23
23
  challenge = VimGolfFinder::Challenge.new
24
24
 
25
- doc = Nokogiri::HTML(open("#{BASE_URL}/challenges/#{id}", 'Accept' => 'text/html'))
25
+ doc = Nokogiri::HTML(URI.open("#{BASE_URL}/challenges/#{id}", 'Accept' => 'text/html'))
26
26
 
27
27
  doc.css('.grid_7:not(#about)').each do |dom|
28
28
  challenge.id = id
@@ -30,7 +30,7 @@ module VimGolfFinder
30
30
  challenge.description = dom.at_css('p').content
31
31
  challenge.start_file = dom.at_css('.prettyprint').content
32
32
  challenge.end_file = dom.css('.prettyprint')[1].content
33
- challenge.view_diff = dom.at_css('pre.diff').content
33
+ challenge.view_diff = dom.at_css('pre#diff').content
34
34
  end
35
35
 
36
36
  challenge
@@ -1,3 +1,3 @@
1
1
  module VimGolfFinder
2
- VERSION = '0.1.4'
2
+ VERSION = '0.1.8'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vimgolf-finder
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lee Sun-Hyoup
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-01 00:00:00.000000000 Z
11
+ date: 2021-11-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -123,7 +123,7 @@ homepage: https://github.com/kciter/vimgolf-finder
123
123
  licenses:
124
124
  - MIT
125
125
  metadata: {}
126
- post_install_message:
126
+ post_install_message:
127
127
  rdoc_options: []
128
128
  require_paths:
129
129
  - lib
@@ -138,9 +138,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
138
138
  - !ruby/object:Gem::Version
139
139
  version: '0'
140
140
  requirements: []
141
- rubyforge_project:
142
- rubygems_version: 2.5.2
143
- signing_key:
141
+ rubygems_version: 3.1.2
142
+ signing_key:
144
143
  specification_version: 4
145
144
  summary: VimGolf challenge finder.
146
145
  test_files: []