jisho-cli 0.1.0
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 +7 -0
- data/bin/jisho +30 -0
- data/lib/jisho.rb +25 -0
- data/lib/jisho/result.rb +52 -0
- data/lib/jisho/util.rb +17 -0
- data/lib/jisho/version.rb +3 -0
- metadata +93 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dc4301bc2c9880f1bdc7770579b1a5cc6a245a2e
|
4
|
+
data.tar.gz: 34f1a8a55428752fc889b9fe40ec9d19a1fff207
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 39fc83a806dd4c81c866af6d0c790655ce1ae973f57ba012663cd2bc767cb0d2e14a06e163955a364d1dbf4e7c5ddd05f7198099a9ed387afcaf9f2403a2697e
|
7
|
+
data.tar.gz: 3173093e3812de9259397e7a3dc7f23be57e271631713443723ac2ae1b8a157b494f53c0aeeacf90b1d826239674a966a998cedc3d2eb3ca77a45200ec7b79ee
|
data/bin/jisho
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'jisho'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
|
8
|
+
OptionParser.new do |opts|
|
9
|
+
opts.banner = <<-EOS
|
10
|
+
|
11
|
+
An english-japanese translator that help you search word via command line.
|
12
|
+
It supports to search word in romanji/katakana/kanji/english.
|
13
|
+
Based on http://jisho.org API.
|
14
|
+
|
15
|
+
Usage: jisho [OPTION] WORD
|
16
|
+
|
17
|
+
Options:
|
18
|
+
EOS
|
19
|
+
|
20
|
+
opts.on('-w', '--word [WORD]', 'search word') do |word|
|
21
|
+
options[:word] = word
|
22
|
+
end
|
23
|
+
|
24
|
+
opts.on('-h', '--help', 'display information') do |help|
|
25
|
+
puts opts
|
26
|
+
exit
|
27
|
+
end
|
28
|
+
end.parse!
|
29
|
+
|
30
|
+
Jisho.search(options[:word]) if options.key?(:word)
|
data/lib/jisho.rb
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
require "net/http"
|
2
|
+
require "json"
|
3
|
+
require "io/console"
|
4
|
+
require "jisho/version"
|
5
|
+
require "jisho/util"
|
6
|
+
require "jisho/result"
|
7
|
+
|
8
|
+
module Jisho
|
9
|
+
extend self
|
10
|
+
|
11
|
+
JISHO_API_URL = "http://jisho.org/api/v1"
|
12
|
+
|
13
|
+
def search(words)
|
14
|
+
path = "/search/words"
|
15
|
+
uri = URI(JISHO_API_URL)
|
16
|
+
uri.path << path
|
17
|
+
uri.query = URI.encode_www_form(keyword: words)
|
18
|
+
response = Net::HTTP.get_response(uri)
|
19
|
+
if Net::HTTPSuccess === response
|
20
|
+
Jisho::Result.display(words, response.body)
|
21
|
+
else
|
22
|
+
raise "Could not connect to jisho.org API"
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
data/lib/jisho/result.rb
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
module Jisho
|
2
|
+
class Result
|
3
|
+
CONSOLE_WIDTH = IO.console.winsize[1]
|
4
|
+
HEADERS = %w(kanji hiragana english)
|
5
|
+
|
6
|
+
class << self
|
7
|
+
def display(word, response)
|
8
|
+
print header(word)
|
9
|
+
print body(response)
|
10
|
+
end
|
11
|
+
|
12
|
+
private
|
13
|
+
|
14
|
+
def header(word)
|
15
|
+
output = "\n#{seperator}\nsearching word: #{word}\n#{seperator}\n"
|
16
|
+
HEADERS.each_with_index do |header, index|
|
17
|
+
output += header
|
18
|
+
break if index == 2
|
19
|
+
output += "#{whitespace(header)}| "
|
20
|
+
end
|
21
|
+
output += "\n#{seperator}"
|
22
|
+
end
|
23
|
+
|
24
|
+
def body(resp)
|
25
|
+
output = ""
|
26
|
+
Jisho::Util.format_resp(resp).each do |r|
|
27
|
+
output += "\n"
|
28
|
+
HEADERS.each_with_index do |header, i|
|
29
|
+
word = r[header.to_sym] || ''
|
30
|
+
output += word
|
31
|
+
break if i == 2
|
32
|
+
output += "#{whitespace(word)}| "
|
33
|
+
end
|
34
|
+
end
|
35
|
+
output
|
36
|
+
end
|
37
|
+
|
38
|
+
def seperator
|
39
|
+
output = ""
|
40
|
+
CONSOLE_WIDTH.times.each { |i| output += "-" }
|
41
|
+
output
|
42
|
+
end
|
43
|
+
|
44
|
+
def whitespace(word)
|
45
|
+
output = ""
|
46
|
+
used_width = word =~ /\p{Han}|\p{Hiragana}|\p{Katakana}/ ? word.length * 2 : word.length
|
47
|
+
(CONSOLE_WIDTH / 3 - used_width).times.each { |i| output += " " }
|
48
|
+
output
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
data/lib/jisho/util.rb
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
module Jisho
|
2
|
+
module Util
|
3
|
+
extend self
|
4
|
+
|
5
|
+
def format_resp(resp)
|
6
|
+
formatted_resp = []
|
7
|
+
JSON.parse(resp)['data'].select { |m| m['is_common'] }.take(10).each do |r|
|
8
|
+
formatted_resp.push({
|
9
|
+
kanji: r["japanese"].first["word"],
|
10
|
+
hiragana: r["japanese"].first["reading"],
|
11
|
+
english: r["senses"].first["english_definitions"].join(', ')
|
12
|
+
})
|
13
|
+
end
|
14
|
+
formatted_resp
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
metadata
ADDED
@@ -0,0 +1,93 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: jisho-cli
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Minh Phan
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-05-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.13'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.13'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '3.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '3.0'
|
55
|
+
description:
|
56
|
+
email:
|
57
|
+
- wofi.minh@1pac.vn
|
58
|
+
executables:
|
59
|
+
- jisho
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- bin/jisho
|
64
|
+
- lib/jisho.rb
|
65
|
+
- lib/jisho/result.rb
|
66
|
+
- lib/jisho/util.rb
|
67
|
+
- lib/jisho/version.rb
|
68
|
+
homepage: https://github.com/wofi-minh/jisho
|
69
|
+
licenses:
|
70
|
+
- MIT
|
71
|
+
metadata:
|
72
|
+
allowed_push_host: https://rubygems.org
|
73
|
+
post_install_message:
|
74
|
+
rdoc_options: []
|
75
|
+
require_paths:
|
76
|
+
- lib
|
77
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">="
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: '0'
|
82
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
version: '0'
|
87
|
+
requirements: []
|
88
|
+
rubyforge_project:
|
89
|
+
rubygems_version: 2.6.10
|
90
|
+
signing_key:
|
91
|
+
specification_version: 4
|
92
|
+
summary: An english-japanese dictionary using jisho.org API
|
93
|
+
test_files: []
|