ygoprodeck 1.0.6 → 1.0.9

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,19 @@
1
+ module Ygoprodeck
2
+ class ID
3
+ def self.is(id)
4
+ url = "#{Ygoprodeck::Endpoint.is}cardinfo.php?id=#{(id)}"
5
+ uri = URI(url)
6
+
7
+ begin
8
+ response = Net::HTTP.get(uri)
9
+ load = JSON.parse(response)
10
+
11
+ return nil if load["data"].nil? || load["data"].empty?
12
+
13
+ load["data"][0]
14
+ rescue JSON::ParserError, SocketError, StandardError => e
15
+ nil
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,35 @@
1
+ module Ygoprodeck
2
+ class Match
3
+ def self.normalize(text)
4
+ text.downcase.gsub(/[^a-z0-9\s\-]/, '').strip
5
+ end
6
+
7
+ def self.is(name_card)
8
+ json_path = File.expand_path('assets/names_card.json', __dir__)
9
+ names = JSON.parse(File.read(json_path))
10
+
11
+ normalized_input = normalize(name_card)
12
+ input_words = normalized_input.split
13
+
14
+ substring_matches = names.select { |name| normalize(name).include?(normalized_input) }
15
+
16
+ if !substring_matches.empty?
17
+ best_match = substring_matches.min_by { |name| normalize(name).length }
18
+ else
19
+ word_matches = names.select do |name|
20
+ name_words = normalize(name).split
21
+ input_words.all? { |word| name_words.any? { |nw| nw.include?(word) } }
22
+ end
23
+
24
+ if !word_matches.empty?
25
+ best_match = word_matches.min_by { |name| normalize(name).length }
26
+ else
27
+ matcher = Levenshtein.new(normalized_input)
28
+ best_match = names.min_by { |name| matcher.match(normalize(name)) }
29
+ end
30
+ end
31
+
32
+ best_match
33
+ end
34
+ end
35
+ end
@@ -1,3 +1,3 @@
1
1
  module Ygoprodeck
2
- VERSION = "1.0.6"
2
+ VERSION = "1.0.9"
3
3
  end
data/lib/ygoprodeck.rb CHANGED
@@ -1,19 +1,10 @@
1
- require 'open-uri'
2
- require 'net/http'
3
- require 'json'
4
- require 'ygoprodeck/version'
5
- require 'ygoprodeck/errors'
6
- require 'ygoprodeck/search/client/endpoint'
7
- require 'ygoprodeck/search/client/image_gapis'
8
- require 'ygoprodeck/search/card_sets'
9
- #require 'ygoprodeck/search/all_card' # performance issue
10
- require 'ygoprodeck/search/random'
11
- require 'ygoprodeck/search/name'
12
- require 'ygoprodeck/search/list'
13
- require 'ygoprodeck/search/fuzzy_name'
14
- require 'ygoprodeck/search/archetype'
15
- require 'ygoprodeck/search/banlist'
16
- require 'ygoprodeck/search/check_db_version'
1
+ require "open-uri"
2
+ require "net/http"
3
+ require "json"
4
+ require "amatch"
5
+ include Amatch
6
+
7
+ Dir[File.join(__dir__, "ygoprodeck/**/*.rb")].sort.each { |f| require f }
17
8
 
18
9
  module Ygoprodeck
19
10
  end
data/package.json ADDED
@@ -0,0 +1,20 @@
1
+ {
2
+ "name": "ygoprodeck",
3
+ "version": "1.0.0",
4
+ "description": "![Lang](https://img.shields.io/badge/language-ruby-red)\r [![Gem Version](https://img.shields.io/gem/v/ygoprodeck.svg)](https://rubygems.org/gems/ygoprodeck)\r [![Gem Downloads](https://img.shields.io/gem/dt/ygoprodeck.svg)](https://rubygems.org/gems/ygoprodeck)\r [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)",
5
+ "main": "index.js",
6
+ "directories": {
7
+ "example": "examples",
8
+ "lib": "lib"
9
+ },
10
+ "scripts": {
11
+ "test": "echo \"Error: no test specified\" && exit 1"
12
+ },
13
+ "keywords": [],
14
+ "author": "",
15
+ "license": "ISC",
16
+ "devDependencies": {
17
+ "@prettier/plugin-ruby": "^4.0.4",
18
+ "prettier": "^3.5.3"
19
+ }
20
+ }
data/spec/id_spec.rb ADDED
@@ -0,0 +1,10 @@
1
+ RSpec.describe Ygoprodeck do
2
+ it "check search by id" do
3
+ expect(Ygoprodeck::ID.is("46986414")).not_to be nil
4
+ end
5
+
6
+ it "check search by id spesific" do
7
+ spec_id = Ygoprodeck::ID.is("46986414")
8
+ expect(spec_id["name"]).to eq("Dark Magician")
9
+ end
10
+ end
@@ -1,11 +1,9 @@
1
-
2
1
  RSpec.describe Ygoprodeck do
3
- it 'Check version gem' do
2
+ it "Check version gem" do
4
3
  expect(Ygoprodeck::VERSION).not_to be nil
5
4
  end
6
-
7
- it 'Check endpoint' do
5
+
6
+ it "Check endpoint" do
8
7
  expect(Ygoprodeck::Endpoint.is).not_to be nil
9
8
  end
10
-
11
- end
9
+ end
data/ygoprodeck.gemspec CHANGED
@@ -1,28 +1,29 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ lib = File.expand_path("../lib", __FILE__)
2
2
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'ygoprodeck/version'
3
+ require "ygoprodeck/version"
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = "ygoprodeck"
7
- spec.version = Ygoprodeck::VERSION
8
- spec.authors = ["Rokhimin Wahid"]
9
- spec.email = ["rokhim.whd@gmail.com"]
10
- spec.summary = "ygoprodeck API wrapper for search yugioh's card"
11
- spec.description = "ygoprodeck API wrapper for search yugioh card"
12
- spec.homepage = "http://github.com/rokhimin/ygoprodeck"
13
- spec.license = "MIT"
14
-
15
- spec.files = `git ls-files -z`.split("\x0")
16
- spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
- spec.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
6
+ spec.name = "ygoprodeck"
7
+ spec.version = Ygoprodeck::VERSION
8
+ spec.authors = ["Rokhimin Wahid"]
9
+ spec.email = ["whdzera@gmail.com"]
10
+ spec.summary = "ygoprodeck API wrapper for search yugioh's card"
11
+ spec.description = "ygoprodeck API wrapper for search yugioh card"
12
+ spec.homepage = "http://github.com/whdzera/ygoprodeck"
13
+ spec.license = "MIT"
14
+
15
+ spec.files = `git ls-files -z`.split("\x0")
16
+ spec.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
17
+ spec.executables =
18
+ `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
18
19
  spec.require_paths = ["lib"]
19
-
20
- spec.required_ruby_version = '>= 2.0.0'
21
-
20
+
21
+ spec.required_ruby_version = ">= 2.0.0"
22
+
23
+ spec.add_dependency "amatch", "~> 0.4.1"
22
24
  spec.add_development_dependency "bundler", "~> 2.5.23"
23
- spec.add_development_dependency "rake", "~> 10.0"
25
+ spec.add_development_dependency "rake", "~> 13.0"
24
26
  spec.add_development_dependency "rspec", "~> 3.0"
25
- spec.add_development_dependency 'rspec-prof', '~> 0.0.7'
26
- spec.add_development_dependency 'rubocop', '~> 0.68.0'
27
- spec.add_development_dependency 'rubocop-performance', '~> 1.0'
27
+ spec.add_development_dependency "rspec-prof", "~> 0.0.7"
28
+ spec.add_development_dependency "syntax_tree", "6.2.0"
28
29
  end
metadata CHANGED
@@ -1,110 +1,111 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ygoprodeck
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.6
4
+ version: 1.0.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rokhimin Wahid
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-05-14 00:00:00.000000000 Z
10
+ date: 2025-07-19 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
- name: bundler
13
+ name: amatch
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 2.5.23
19
- type: :development
18
+ version: 0.4.1
19
+ type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 2.5.23
25
+ version: 0.4.1
26
26
  - !ruby/object:Gem::Dependency
27
- name: rake
27
+ name: bundler
28
28
  requirement: !ruby/object:Gem::Requirement
29
29
  requirements:
30
30
  - - "~>"
31
31
  - !ruby/object:Gem::Version
32
- version: '10.0'
32
+ version: 2.5.23
33
33
  type: :development
34
34
  prerelease: false
35
35
  version_requirements: !ruby/object:Gem::Requirement
36
36
  requirements:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
- version: '10.0'
39
+ version: 2.5.23
40
40
  - !ruby/object:Gem::Dependency
41
- name: rspec
41
+ name: rake
42
42
  requirement: !ruby/object:Gem::Requirement
43
43
  requirements:
44
44
  - - "~>"
45
45
  - !ruby/object:Gem::Version
46
- version: '3.0'
46
+ version: '13.0'
47
47
  type: :development
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - "~>"
52
52
  - !ruby/object:Gem::Version
53
- version: '3.0'
53
+ version: '13.0'
54
54
  - !ruby/object:Gem::Dependency
55
- name: rspec-prof
55
+ name: rspec
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - "~>"
59
59
  - !ruby/object:Gem::Version
60
- version: 0.0.7
60
+ version: '3.0'
61
61
  type: :development
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 0.0.7
67
+ version: '3.0'
68
68
  - !ruby/object:Gem::Dependency
69
- name: rubocop
69
+ name: rspec-prof
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 0.68.0
74
+ version: 0.0.7
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
79
  - - "~>"
80
80
  - !ruby/object:Gem::Version
81
- version: 0.68.0
81
+ version: 0.0.7
82
82
  - !ruby/object:Gem::Dependency
83
- name: rubocop-performance
83
+ name: syntax_tree
84
84
  requirement: !ruby/object:Gem::Requirement
85
85
  requirements:
86
- - - "~>"
86
+ - - '='
87
87
  - !ruby/object:Gem::Version
88
- version: '1.0'
88
+ version: 6.2.0
89
89
  type: :development
90
90
  prerelease: false
91
91
  version_requirements: !ruby/object:Gem::Requirement
92
92
  requirements:
93
- - - "~>"
93
+ - - '='
94
94
  - !ruby/object:Gem::Version
95
- version: '1.0'
95
+ version: 6.2.0
96
96
  description: ygoprodeck API wrapper for search yugioh card
97
97
  email:
98
- - rokhim.whd@gmail.com
98
+ - whdzera@gmail.com
99
99
  executables:
100
100
  - console
101
101
  - setup
102
102
  extensions: []
103
103
  extra_rdoc_files: []
104
104
  files:
105
+ - ".github/workflows/ruby.yml"
105
106
  - ".gitignore"
107
+ - ".prettierrc"
106
108
  - ".rspec"
107
- - ".rubocop.yml"
108
109
  - CODE_OF_CONDUCT.md
109
110
  - Gemfile
110
111
  - LICENSE.txt
@@ -115,7 +116,9 @@ files:
115
116
  - examples/archetype.rb
116
117
  - examples/banlist.rb
117
118
  - examples/check_db.rb
119
+ - examples/id.rb
118
120
  - examples/list.rb
121
+ - examples/match.rb
119
122
  - examples/random.rb
120
123
  - examples/search.rb
121
124
  - examples/search_fuzzy.rb
@@ -124,21 +127,26 @@ files:
124
127
  - lib/ygoprodeck/errors.rb
125
128
  - lib/ygoprodeck/search/all_card.rb
126
129
  - lib/ygoprodeck/search/archetype.rb
130
+ - lib/ygoprodeck/search/assets/names_card.json
127
131
  - lib/ygoprodeck/search/banlist.rb
128
132
  - lib/ygoprodeck/search/card_sets.rb
129
133
  - lib/ygoprodeck/search/check_db_version.rb
130
134
  - lib/ygoprodeck/search/client/endpoint.rb
131
135
  - lib/ygoprodeck/search/client/image_gapis.rb
132
136
  - lib/ygoprodeck/search/fuzzy_name.rb
137
+ - lib/ygoprodeck/search/id.rb
133
138
  - lib/ygoprodeck/search/list.rb
139
+ - lib/ygoprodeck/search/match.rb
134
140
  - lib/ygoprodeck/search/name.rb
135
141
  - lib/ygoprodeck/search/random.rb
136
142
  - lib/ygoprodeck/version.rb
143
+ - package.json
137
144
  - spec/archetype_spec.rb
138
145
  - spec/banlist_spec.rb
139
146
  - spec/cardsets_spec.rb
140
147
  - spec/check_db_spec.rb
141
148
  - spec/fuzzy_name_spec.rb
149
+ - spec/id_spec.rb
142
150
  - spec/image_spec.rb
143
151
  - spec/list_spec.rb
144
152
  - spec/name_spec.rb
@@ -147,7 +155,7 @@ files:
147
155
  - spec/ygoprodeck/response_example.json
148
156
  - spec/ygoprodeck_spec.rb
149
157
  - ygoprodeck.gemspec
150
- homepage: http://github.com/rokhimin/ygoprodeck
158
+ homepage: http://github.com/whdzera/ygoprodeck
151
159
  licenses:
152
160
  - MIT
153
161
  metadata: {}
data/.rubocop.yml DELETED
@@ -1,40 +0,0 @@
1
- # Disable all metrics.
2
- Metrics/AbcSize:
3
- Enabled: false
4
-
5
- Metrics/BlockNesting:
6
- Enabled: false
7
-
8
- Metrics/BlockLength:
9
- Enabled: false
10
-
11
- Metrics/ClassLength:
12
- Enabled: false
13
-
14
- Metrics/ModuleLength:
15
- Enabled: false
16
-
17
- Metrics/CyclomaticComplexity:
18
- Enabled: false
19
-
20
- Metrics/LineLength:
21
- Enabled: false
22
-
23
- Metrics/MethodLength:
24
- Enabled: false
25
-
26
- Metrics/ParameterLists:
27
- Enabled: false
28
-
29
- Metrics/PerceivedComplexity:
30
- Enabled: false
31
-
32
- Security/Eval:
33
- Enabled: false
34
-
35
- Style/ClassAndModuleChildren:
36
- Enabled: false
37
-
38
- Style/FrozenStringLiteralComment:
39
- Enabled: false
40
-