solve_pb 0.1.2 → 0.1.3
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 +4 -4
- data/Gemfile.lock +1 -3
- data/README.md +9 -3
- data/lib/solve_pb.rb +19 -14
- data/lib/solve_pb/{command_line.rb → args_inspector.rb} +3 -3
- data/lib/solve_pb/file_generator.rb +18 -36
- data/lib/solve_pb/problem.rb +4 -4
- data/lib/solve_pb/problem_parser.rb +0 -5
- data/lib/solve_pb/version.rb +1 -1
- data/template/{C++ → c++}/compile.sh +0 -0
- data/template/{C++ → c++}/main.cpp +0 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4f1b4648ad4c326eb611a706ac42d1dc993a7ad6bf3086bad38999f677ce42a3
|
4
|
+
data.tar.gz: 437a91f41bf9ab20ff9ecb481f288eb44600b46e5f78b3e47c3ef8a715a6a0af
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2f6c194f47177a826ef5bbcdda6e63d508a2e6e46354eb4ef2ed512edc772dceb9bc9a6134b78b25840fa16012f15c4b1ee4fbe5aa29d0c8ff17943796b3404b
|
7
|
+
data.tar.gz: 825629a352f22765b0c38756334dcb9884b0ecb8c4f541cd930051fe5758694e76a7008b2e2060d9153d225cea7de6f3280ad5dc2cee49ebb261379c230ec7b6
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
solve_pb (0.1.
|
4
|
+
solve_pb (0.1.2)
|
5
5
|
|
6
6
|
GEM
|
7
7
|
remote: https://rubygems.org/
|
8
8
|
specs:
|
9
|
-
byebug (10.0.2)
|
10
9
|
diff-lcs (1.3)
|
11
10
|
mini_portile2 (2.1.0)
|
12
11
|
nokogiri (1.6.8.1)
|
@@ -31,7 +30,6 @@ PLATFORMS
|
|
31
30
|
|
32
31
|
DEPENDENCIES
|
33
32
|
bundler (~> 1.16)
|
34
|
-
byebug
|
35
33
|
nokogiri (~> 1.6.7)
|
36
34
|
rake (~> 10.0)
|
37
35
|
rspec (~> 3.0)
|
data/README.md
CHANGED
@@ -22,10 +22,16 @@ Or install it yourself as:
|
|
22
22
|
## Usage
|
23
23
|
|
24
24
|
```ruby
|
25
|
-
bundle exec
|
25
|
+
bundle exec solve [hackerrank problem url] ["ruby", "c++"]
|
26
|
+
```
|
27
|
+
```ruby
|
28
|
+
bundle exec solve https://www.hackerrank.com/challenges/bomber-man ruby
|
29
|
+
```
|
30
|
+
```ruby
|
31
|
+
bundle exec solve https://www.hackerrank.com/challenges/bomber-man c++
|
26
32
|
```
|
27
33
|
|
28
|
-
We currently support Ruby (default)
|
34
|
+
We currently support Ruby (default).
|
29
35
|
|
30
36
|
## Development
|
31
37
|
|
@@ -35,7 +41,7 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
|
|
35
41
|
|
36
42
|
## Contributing
|
37
43
|
|
38
|
-
Bug reports and pull requests are welcome on GitHub at https://github.com/
|
44
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/nctruong/solve_pb. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
39
45
|
|
40
46
|
## License
|
41
47
|
|
data/lib/solve_pb.rb
CHANGED
@@ -1,25 +1,30 @@
|
|
1
|
-
require
|
1
|
+
require 'fileutils'
|
2
|
+
require 'open-uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'json'
|
5
|
+
require 'uri'
|
6
|
+
require 'nokogiri'
|
7
|
+
|
2
8
|
require "solve_pb/version"
|
3
9
|
require "solve_pb/problem"
|
4
10
|
require "solve_pb/problem_parser"
|
5
|
-
require "solve_pb/
|
11
|
+
require "solve_pb/args_inspector"
|
6
12
|
require "solve_pb/file_generator"
|
7
13
|
|
8
14
|
module SolvePb
|
9
|
-
|
10
|
-
|
11
|
-
|
15
|
+
module ClassMethods
|
16
|
+
def root
|
17
|
+
File.dirname __dir__
|
18
|
+
end
|
12
19
|
|
13
|
-
|
14
|
-
|
15
|
-
|
20
|
+
def test
|
21
|
+
File.join root, "test"
|
22
|
+
end
|
16
23
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
SolvePb::FileGenerator.new.generate(args)
|
21
|
-
else
|
22
|
-
puts "Doing nothing. Abort!"
|
24
|
+
def main
|
25
|
+
args = SolvePb::ArgsInspector.new.parse
|
26
|
+
args.nil? ? 'Lack of URL' : SolvePb::FileGenerator.new.generate(args)
|
23
27
|
end
|
24
28
|
end
|
29
|
+
extend ClassMethods
|
25
30
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module SolvePb
|
2
|
-
class
|
2
|
+
class ArgsInspector
|
3
3
|
def parse
|
4
4
|
args = [:url, :lang]
|
5
5
|
@args = {}
|
@@ -11,8 +11,8 @@ module SolvePb
|
|
11
11
|
@args[:lang] = "ruby"
|
12
12
|
end
|
13
13
|
if @args[:url].nil?
|
14
|
-
puts "Please
|
15
|
-
puts "$
|
14
|
+
puts "Please input url. Example:"
|
15
|
+
puts "$ bundle exec solve https://www.hackerrank.com/challenges/bomber-man"
|
16
16
|
return nil
|
17
17
|
end
|
18
18
|
if @args.size > 2
|
@@ -1,7 +1,3 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
require 'open-uri'
|
3
|
-
require 'solve_pb/problem_parser'
|
4
|
-
|
5
1
|
module SolvePb
|
6
2
|
class FileGenerator
|
7
3
|
attr_reader :problem, :language
|
@@ -11,69 +7,55 @@ module SolvePb
|
|
11
7
|
@language = args[:lang]
|
12
8
|
if problem
|
13
9
|
puts "Preparing workspace"
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
10
|
+
prepare_directory
|
11
|
+
prepare_readme
|
12
|
+
prepare_main_program
|
13
|
+
prepare_sample_input
|
14
|
+
prepare_sample_output
|
19
15
|
download_pb_statement
|
20
|
-
# create_runsh(problem, language)
|
21
|
-
else
|
22
|
-
puts "Couldn't fetch problem information. Please raise an issue on https://github.com/nctruong/solve_pb"
|
23
16
|
end
|
24
17
|
end
|
25
18
|
|
26
19
|
private
|
27
20
|
|
28
|
-
def
|
21
|
+
def prepare_directory
|
29
22
|
puts "\tcreate #{File.join(problem.name, '')}"
|
30
23
|
Dir.mkdir(problem.name)
|
31
24
|
end
|
32
25
|
|
33
|
-
def
|
26
|
+
def prepare_main_program
|
34
27
|
main_file_name = get_main_file_name
|
35
|
-
main_file_path = File.join(
|
36
|
-
SolvePb.root, "template",
|
37
|
-
language, main_file_name)
|
28
|
+
main_file_path = File.join(SolvePb.root, "template", language, main_file_name)
|
38
29
|
des_path = File.join(problem.name, main_file_name)
|
39
30
|
puts "\tcreate #{des_path}"
|
40
31
|
FileUtils.cp(main_file_path, des_path)
|
32
|
+
rescue
|
33
|
+
puts language
|
34
|
+
puts main_file_name
|
41
35
|
end
|
42
36
|
|
43
|
-
def
|
37
|
+
def prepare_sample_input
|
44
38
|
path = File.join(problem.name, "sample.input")
|
45
39
|
unless file_exists?(path)
|
46
|
-
open(path, 'w')
|
47
|
-
f.write(problem.sample_input)
|
48
|
-
end
|
40
|
+
open(path, 'w') { |f| f.write(problem.sample_input) }
|
49
41
|
puts "\tcreate #{path}"
|
50
42
|
end
|
51
43
|
end
|
52
44
|
|
53
|
-
def
|
45
|
+
def prepare_sample_output
|
54
46
|
path = File.join(problem.name, "sample.output")
|
55
47
|
unless file_exists?(path)
|
56
|
-
open(path, 'w')
|
57
|
-
f.write(problem.sample_output)
|
58
|
-
end
|
48
|
+
open(path, 'w') { |f| f.write(problem.sample_output) }
|
59
49
|
puts "\tcreate #{path}"
|
60
50
|
end
|
61
51
|
end
|
62
52
|
|
63
|
-
def create_runsh
|
64
|
-
runsh_path = File.join(
|
65
|
-
SolvePb.root, "template", language, "compile.sh")
|
66
|
-
des_path = File.join(problem.name, "run.sh")
|
67
|
-
puts "\tcreate #{des_path}"
|
68
|
-
FileUtils.cp(runsh_path, des_path)
|
69
|
-
FileUtils.chmod("a+x", des_path)
|
70
|
-
end
|
71
|
-
|
72
53
|
def get_main_file_name
|
73
54
|
return "main.rb" if language == "ruby"
|
55
|
+
return "main.cpp" if language == "c++"
|
74
56
|
end
|
75
57
|
|
76
|
-
def
|
58
|
+
def prepare_readme
|
77
59
|
path = File.join(problem.name, "readme.md")
|
78
60
|
unless file_exists?(path)
|
79
61
|
open(path, 'w') do |f|
|
@@ -93,7 +75,7 @@ module SolvePb
|
|
93
75
|
end
|
94
76
|
|
95
77
|
def file_exists?(path)
|
96
|
-
raise "\
|
78
|
+
raise "\tIgnore #{path}. It already exists." if File.exist?(path)
|
97
79
|
false
|
98
80
|
end
|
99
81
|
end
|
data/lib/solve_pb/problem.rb
CHANGED
@@ -4,10 +4,10 @@ module SolvePb
|
|
4
4
|
attr_accessor :url, :name, :sample_input, :sample_output
|
5
5
|
|
6
6
|
def initialize(url, name, sample_input, sample_output)
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
@url = url
|
8
|
+
@name = name
|
9
|
+
@sample_input = sample_input
|
10
|
+
@sample_output = sample_output
|
11
11
|
end
|
12
12
|
|
13
13
|
def download_pdf
|
data/lib/solve_pb/version.rb
CHANGED
File without changes
|
File without changes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: solve_pb
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Will Nguyen
|
@@ -73,14 +73,14 @@ files:
|
|
73
73
|
- bin/setup
|
74
74
|
- bin/solve
|
75
75
|
- lib/solve_pb.rb
|
76
|
-
- lib/solve_pb/
|
76
|
+
- lib/solve_pb/args_inspector.rb
|
77
77
|
- lib/solve_pb/file_generator.rb
|
78
78
|
- lib/solve_pb/problem.rb
|
79
79
|
- lib/solve_pb/problem_parser.rb
|
80
80
|
- lib/solve_pb/version.rb
|
81
81
|
- solve_pb.gemspec
|
82
|
-
- template/
|
83
|
-
- template/
|
82
|
+
- template/c++/compile.sh
|
83
|
+
- template/c++/main.cpp
|
84
84
|
- template/ruby/main.rb
|
85
85
|
homepage: https://github.com/nctruong/solve_pb
|
86
86
|
licenses:
|