aiuto 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Aiuto.gemspec +17 -0
- data/LICENSE.md +21 -0
- data/README.md +69 -0
- data/bin/aiuto +5 -0
- data/lib/aiuto.rb +71 -0
- data/lib/klass.rb +31 -0
- data/lib/list.rb +27 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: cbcbff68ed6b7a0ef83625c567edef26386ffab0f65e31ff2d1437d6ba4ec707
|
4
|
+
data.tar.gz: ba2b973a54aced91fc5d116050e214ff25703d2bd19dec2df57120d8ea3776de
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b509e25431d6900438827aae26569653ad031d4b7bbf21baf40ca15411494d2f52566e4ca8583d5f0ea2e5eb84441a27bbf9808aab5431b785d679b440f643b5
|
7
|
+
data.tar.gz: d3fe56e4fad3cd182e86577952580878e2c70b116470d875480ad1e24c4fec09591139d5b276d7c973d5ba17c72d4decd908154cbe5744e5f677e54aa2491b0c
|
data/Aiuto.gemspec
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
require "rake"
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "aiuto"
|
5
|
+
s.version = "0.0.1"
|
6
|
+
s.authors = ["Stefano Martin"]
|
7
|
+
s.email = ["stefano.martin87@gmail.com"]
|
8
|
+
s.homepage = "https://github.com/StefanoMartin/Aiuto"
|
9
|
+
s.license = "MIT"
|
10
|
+
s.summary = "For asking help to Google in easy way"
|
11
|
+
s.description = "Google help me! Aiuto aiuto!"
|
12
|
+
s.platform = Gem::Platform::RUBY
|
13
|
+
s.require_paths = ["bin", "lib"]
|
14
|
+
s.files = FileList["bin/*", "lib/*", "Aiuto.gemspec", "LICENSE.md", "README.md"].to_a
|
15
|
+
s.add_runtime_dependency "launchy", "~>2.4.3", ">= 2.4.3"
|
16
|
+
s.executables << 'aiuto'
|
17
|
+
end
|
data/LICENSE.md
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2019 Stefano Martin
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
Aiuto
|
2
|
+
==================================
|
3
|
+
|
4
|
+
Aiuto means "help" in Italian. This is a gem to help you to search easily on Google by filtering on specific websites.
|
5
|
+
|
6
|
+
Install the gem with:
|
7
|
+
|
8
|
+
```
|
9
|
+
gem install aiuto
|
10
|
+
```
|
11
|
+
|
12
|
+
Then try it with:
|
13
|
+
|
14
|
+
```
|
15
|
+
aiuto Ruby is awesome
|
16
|
+
```
|
17
|
+
|
18
|
+
YEAH! Google is open and there are only Ruby blogs, forums and similia. No pages about stones and jewels!
|
19
|
+
|
20
|
+
## Which websites do you use for filtering?
|
21
|
+
|
22
|
+
This is the list of websites used in the gem.
|
23
|
+
However by default only the websites under "blog", "git", "docs" and "social" are used by default.
|
24
|
+
|
25
|
+
```ruby
|
26
|
+
{
|
27
|
+
blog: ["rubyflow.com", "medium.com", "rubylearning.com",
|
28
|
+
"rubyinside.com", "yehudakatz.com", "sitepoint.com/ruby",
|
29
|
+
"afreshcup.com", "rubyguides.com", "justinweiss.com",
|
30
|
+
"sandimetz.com", "guides.railsgirls.com"],
|
31
|
+
git: ["github.com", "gitlab.com"],
|
32
|
+
docs: ["ruby-doc.org", "devdocs.io/ruby", "rubydoc.info",
|
33
|
+
"guides.rubyonrails.org"],
|
34
|
+
social: ["stackoverflow.com/questions/tagged/ruby",
|
35
|
+
"ruby-forum.com", "reddit.com/r/ruby", "reddit.com/r/rails"],
|
36
|
+
utility: ["ruby.libhunt.com"],
|
37
|
+
rails: ["opensourcerails.com", "guides.rubyonrails.org",
|
38
|
+
"reddit.com/r/rails",
|
39
|
+
"stackoverflow.com/questions/tagged/ruby-on-rails"],
|
40
|
+
beginner: ["eloquentruby.com",
|
41
|
+
"pragprog.com/book/ruby4/programming-ruby-1-9-2-0",
|
42
|
+
"ruby.learncodethehardway.org/book",
|
43
|
+
"http://mislav.uniqpath.com/poignant-guide/",
|
44
|
+
"https://www.manning.com/books/rails-4-in-action",
|
45
|
+
"railstutorial.org/book"],
|
46
|
+
advanced: ["patshaughnessy.net", "confidentruby.com",
|
47
|
+
"pragprog.com/book/ager/exceptional-ruby", "rubyfu.net"]
|
48
|
+
}
|
49
|
+
```
|
50
|
+
|
51
|
+
If you want to use different filters you can use "-f" followed by the filter you want to use.
|
52
|
+
Like this:
|
53
|
+
|
54
|
+
```
|
55
|
+
aiuto Rails is awesome -f rails beginner
|
56
|
+
```
|
57
|
+
|
58
|
+
In this case we filter by using the websites in the group "rails" and "beginner".
|
59
|
+
|
60
|
+
## Do you have other commands like "-f" ?
|
61
|
+
|
62
|
+
Yes! I provide ```-no``` to remove all the filters, and ```-r``` to remove the word "ruby" from the search.
|
63
|
+
|
64
|
+
Futher I add ```aiuto --help``` for helps on the terminal and ```aiuto --list``` for returning the above list.
|
65
|
+
|
66
|
+
## Hey! I want to use DuckDuckGo or other filters
|
67
|
+
|
68
|
+
Please create issue or do some pull requests for any idea you have.
|
69
|
+
I am more than welcome to improve this gem with your help. :smile:
|
data/bin/aiuto
ADDED
data/lib/aiuto.rb
ADDED
@@ -0,0 +1,71 @@
|
|
1
|
+
require "launchy"
|
2
|
+
require_relative "list"
|
3
|
+
require_relative "klass"
|
4
|
+
|
5
|
+
class Aiuto
|
6
|
+
def self.to_table(arr, splice=3)
|
7
|
+
l = []
|
8
|
+
arr = arr.map{|a| a += ", "}
|
9
|
+
arr[-1][-1] = ""
|
10
|
+
arr[-1][-1] = ""
|
11
|
+
arr = arr.each_slice(splice).to_a
|
12
|
+
arr.each{|a| a[0] = " " + a[0]}
|
13
|
+
arr.each{|r|r.each_with_index{|f,i| l[i] = [l[i]||0, f.length].max}}
|
14
|
+
arr.each{|r|r.each_with_index{|f,i| print "#{f.ljust l[i]} "};puts ""}
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.cli(*args)
|
18
|
+
args = args[0]
|
19
|
+
case args[0]
|
20
|
+
when "--help"
|
21
|
+
print "===== AIUTO HELP ======\n"
|
22
|
+
print "Welcome to Aiuto. Simply write \"aiuto Ruby is awesome\" and I will do a search for you on Google on some Ruby blog or website.\n"
|
23
|
+
print "Keep in mind that Google permits a maximum search of 32 words (OR is not counted as a word).\n\n"
|
24
|
+
print "-f, --filter \t Change filter followed by \"blog\", \"git\", \"docs\", \"social\", \"utility\", \"rails\", \"beginner\", or \"advanced\".\n"
|
25
|
+
print "\t Like this: \"aiuto 'rack queue' -f blog git docs.\n\n"
|
26
|
+
print "-no, --no-filter \t Use plain google\n\n"
|
27
|
+
print "-r, --no-ruby \t Remove word ruby\n\n"
|
28
|
+
print "--list \t List of the used libraries\n\n"
|
29
|
+
print "Aiuto means Help in Italian! :D\n\n"
|
30
|
+
print "========================\n"
|
31
|
+
when "--list"
|
32
|
+
print "========= AIUTO LIST ===========\n"
|
33
|
+
Aiuto_Helper::LIST.each do |k,v|
|
34
|
+
next if [:all, :no, :main].include?(k)
|
35
|
+
print "#{k.to_s.upcase}: \n"
|
36
|
+
to_table(v)
|
37
|
+
end
|
38
|
+
print "================================\n"
|
39
|
+
else
|
40
|
+
words = []
|
41
|
+
blogs = []
|
42
|
+
to_blog = false
|
43
|
+
to_word = true
|
44
|
+
no = false
|
45
|
+
ruby_word = true
|
46
|
+
args.each do |word|
|
47
|
+
case word
|
48
|
+
when "-f", "--filter"
|
49
|
+
to_blog = true
|
50
|
+
to_word = false
|
51
|
+
when "-no", "--no-filter"
|
52
|
+
to_blog = false
|
53
|
+
to_word = false
|
54
|
+
no = true
|
55
|
+
when "-r", "--no-ruby"
|
56
|
+
ruby_word = false
|
57
|
+
else
|
58
|
+
if to_word
|
59
|
+
words << word
|
60
|
+
elsif to_blog
|
61
|
+
blogs << word
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
blogs = [:main] if blogs.empty?
|
66
|
+
words = words.join(" ")
|
67
|
+
blogs = blogs.map(&:to_sym)
|
68
|
+
Aiuto.new(words).google(type: blogs, no: no, ruby: ruby_word)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
data/lib/klass.rb
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
class Aiuto
|
2
|
+
include Aiuto_Helper
|
3
|
+
|
4
|
+
def initialize(obj)
|
5
|
+
case obj
|
6
|
+
when String
|
7
|
+
@obj = obj
|
8
|
+
when Method
|
9
|
+
@obj = obj.receiver + "#" + obj.name
|
10
|
+
when Class, Module
|
11
|
+
@obj = obj.to_s
|
12
|
+
else
|
13
|
+
@obj = obj.to_s
|
14
|
+
@obj = @obj.class.to_s if @obj.to_s[0..1] == "<#"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def google(type: [], no: false, ruby: true)
|
19
|
+
sites = []
|
20
|
+
type = [type] unless type.is_a?(Array)
|
21
|
+
type = [] if no
|
22
|
+
type.each do |t|
|
23
|
+
sites |= LIST[t.to_sym]
|
24
|
+
end
|
25
|
+
sites = sites.map{|s| "site:"+s}.join(" OR ")
|
26
|
+
url = "www.google.com/search?q="+sites
|
27
|
+
url += " ruby" if ruby
|
28
|
+
url += " "+@obj.gsub("#", "%23")
|
29
|
+
Launchy.open(url)
|
30
|
+
end
|
31
|
+
end
|
data/lib/list.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module Aiuto_Helper
|
2
|
+
LIST = {
|
3
|
+
blog: ["rubyflow.com", "medium.com", "rubylearning.com",
|
4
|
+
"rubyinside.com", "yehudakatz.com", "sitepoint.com/ruby",
|
5
|
+
"afreshcup.com", "rubyguides.com", "justinweiss.com",
|
6
|
+
"sandimetz.com", "guides.railsgirls.com"],
|
7
|
+
git: ["github.com", "gitlab.com"],
|
8
|
+
docs: ["ruby-doc.org", "devdocs.io/ruby", "rubydoc.info",
|
9
|
+
"guides.rubyonrails.org"],
|
10
|
+
social: ["stackoverflow.com/questions/tagged/ruby",
|
11
|
+
"ruby-forum.com", "reddit.com/r/ruby", "reddit.com/r/rails"],
|
12
|
+
utility: ["ruby.libhunt.com"],
|
13
|
+
rails: ["opensourcerails.com", "guides.rubyonrails.org",
|
14
|
+
"reddit.com/r/rails",
|
15
|
+
"stackoverflow.com/questions/tagged/ruby-on-rails"],
|
16
|
+
beginner: ["eloquentruby.com",
|
17
|
+
"pragprog.com/book/ruby4/programming-ruby-1-9-2-0",
|
18
|
+
"ruby.learncodethehardway.org/book",
|
19
|
+
"http://mislav.uniqpath.com/poignant-guide/",
|
20
|
+
"https://www.manning.com/books/rails-4-in-action",
|
21
|
+
"railstutorial.org/book"],
|
22
|
+
advanced: ["patshaughnessy.net", "confidentruby.com",
|
23
|
+
"pragprog.com/book/ager/exceptional-ruby", "rubyfu.net"]
|
24
|
+
}
|
25
|
+
LIST[:main] = LIST[:blog] | LIST[:docs] | LIST[:git] | LIST[:social]
|
26
|
+
LIST[:no] = []
|
27
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: aiuto
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Stefano Martin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-05-08 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: launchy
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 2.4.3
|
20
|
+
- - "~>"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 2.4.3
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">="
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.3
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 2.4.3
|
33
|
+
description: Google help me! Aiuto aiuto!
|
34
|
+
email:
|
35
|
+
- stefano.martin87@gmail.com
|
36
|
+
executables:
|
37
|
+
- aiuto
|
38
|
+
extensions: []
|
39
|
+
extra_rdoc_files: []
|
40
|
+
files:
|
41
|
+
- Aiuto.gemspec
|
42
|
+
- LICENSE.md
|
43
|
+
- README.md
|
44
|
+
- bin/aiuto
|
45
|
+
- lib/aiuto.rb
|
46
|
+
- lib/klass.rb
|
47
|
+
- lib/list.rb
|
48
|
+
homepage: https://github.com/StefanoMartin/Aiuto
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- bin
|
56
|
+
- lib
|
57
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
63
|
+
requirements:
|
64
|
+
- - ">="
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0'
|
67
|
+
requirements: []
|
68
|
+
rubygems_version: 3.0.3
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: For asking help to Google in easy way
|
72
|
+
test_files: []
|