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.
@@ -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
@@ -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)
@@ -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
@@ -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
@@ -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
@@ -0,0 +1,3 @@
1
+ module Jisho
2
+ VERSION = "0.1.0"
3
+ 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: []