manateq 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,93 @@
1
+ [
2
+ {
3
+ "region_id" : 1,
4
+ "name" : {
5
+ "ar" : "الحدود الشمالية",
6
+ "en" : "Northern Borders"
7
+ }
8
+ },
9
+ {
10
+ "region_id" : 2,
11
+ "name" : {
12
+ "ar" : "الجوف",
13
+ "en" : "Al Jawf"
14
+ }
15
+ },
16
+ {
17
+ "region_id" : 3,
18
+ "name" : {
19
+ "ar" : "تبوك",
20
+ "en" : "Tabuk"
21
+ }
22
+ },
23
+ {
24
+ "region_id" : 4,
25
+ "name" : {
26
+ "ar" : "حائل",
27
+ "en" : "Hail"
28
+ }
29
+ },
30
+ {
31
+ "region_id" : 5,
32
+ "name" : {
33
+ "ar" : "القصيم",
34
+ "en" : "Al Qassim"
35
+ }
36
+ },
37
+ {
38
+ "region_id" : 6,
39
+ "name" : {
40
+ "ar" : "الرياض",
41
+ "en" : "Ar Riyadh"
42
+ }
43
+ },
44
+ {
45
+ "region_id" : 7,
46
+ "name" : {
47
+ "ar" : "المدينة المنورة",
48
+ "en" : "Al Madinah"
49
+ }
50
+ },
51
+ {
52
+ "region_id" : 8,
53
+ "name" : {
54
+ "ar" : "عسير",
55
+ "en" : "Asir"
56
+ }
57
+ },
58
+ {
59
+ "region_id" : 9,
60
+ "name" : {
61
+ "ar" : "الباحة",
62
+ "en" : "Al Baha"
63
+ }
64
+ },
65
+ {
66
+ "region_id" : 10,
67
+ "name" : {
68
+ "ar" : "جازان",
69
+ "en" : "Jazan"
70
+ }
71
+ },
72
+ {
73
+ "region_id" : 11,
74
+ "name" : {
75
+ "ar" : "مكة المكرمة",
76
+ "en" : "Makkah"
77
+ }
78
+ },
79
+ {
80
+ "region_id" : 12,
81
+ "name" : {
82
+ "ar" : "نجران",
83
+ "en" : "Najran"
84
+ }
85
+ },
86
+ {
87
+ "region_id" : 13,
88
+ "name" : {
89
+ "ar" : "الشرقية",
90
+ "en" : "Eastern"
91
+ }
92
+ }
93
+ ]
@@ -0,0 +1,29 @@
1
+ module Manateq
2
+ class District
3
+ include Manateq::Resource
4
+
5
+ attr_accessor :id
6
+ attr_accessor :arabic_name
7
+ attr_accessor :english_name
8
+ attr_accessor :city
9
+
10
+ def self.resource_name
11
+ 'districts'
12
+ end
13
+
14
+ def self.fill data
15
+ r_obj = self.new
16
+ r_obj.id = data['district_id']
17
+ r_obj.arabic_name = data['name']['ar']
18
+ r_obj.english_name = data['name']['en']
19
+ r_obj.city = Manateq::Region.get_by_id data['city_id']
20
+ r_obj
21
+ end
22
+
23
+ def self.compare resource, name
24
+ resource.arabic_name.downcase.index(name.downcase) != nil or
25
+ resource.english_name.downcase.index(name.downcase) != nil
26
+ end
27
+
28
+ end
29
+ end
@@ -0,0 +1,10 @@
1
+ require 'json'
2
+
3
+ module Manateq
4
+ class Helper
5
+ def self.to_hash(file)
6
+ file = File.read("lib/manateq/data/#{file}.json")
7
+ data_hash = JSON.parse(file)
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,28 @@
1
+ require_relative '../../lib/manateq/helper'
2
+ module Manateq
3
+ class Region
4
+ include Manateq::Resource
5
+
6
+ attr_accessor :id
7
+ attr_accessor :arabic_name
8
+ attr_accessor :english_name
9
+
10
+ def self.resource_name
11
+ 'regions'
12
+ end
13
+
14
+ def self.fill data
15
+ r_obj = self.new
16
+ r_obj.id = data['region_id']
17
+ r_obj.arabic_name = data['name']['ar']
18
+ r_obj.english_name = data['name']['en']
19
+ r_obj
20
+ end
21
+
22
+ def self.compare resource, name
23
+ resource.arabic_name.downcase.index(name.downcase) != nil or
24
+ resource.english_name.downcase.index(name.downcase) != nil
25
+ end
26
+
27
+ end
28
+ end
@@ -0,0 +1,57 @@
1
+ module Manateq
2
+ module Resource
3
+
4
+ def self.included base
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def resource_name
10
+ 'resource'
11
+ end
12
+
13
+ def fill data
14
+ nil
15
+ end
16
+
17
+ def compare resource, name
18
+ false
19
+ end
20
+
21
+ def list
22
+ data = Manateq::Helper.to_hash self.resource_name
23
+ result = []
24
+ data.each do |resource|
25
+ r_obj = self.fill resource
26
+ result.append(r_obj)
27
+ end
28
+ result
29
+ end
30
+
31
+ def search name
32
+ data = self.list
33
+ result = nil
34
+ data.each do |resource|
35
+ if self.compare resource, name
36
+ result = resource
37
+ break
38
+ end
39
+ end
40
+ result
41
+ end
42
+
43
+ def get_by_id id
44
+ data = self.list
45
+ result = nil
46
+ data.each do |resource|
47
+ unless resource.id != id
48
+ result = resource
49
+ break
50
+ end
51
+ end
52
+ result
53
+ end
54
+ end
55
+
56
+ end
57
+ end
@@ -0,0 +1,3 @@
1
+ module Manateq
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,29 @@
1
+
2
+ lib = File.expand_path("../lib", __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require "manateq/version"
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "manateq"
8
+ spec.version = Manateq::VERSION
9
+ spec.authors = ["nuha almozaini"]
10
+ spec.email = ["nuha.mozaini@gmail.com"]
11
+
12
+ spec.summary = "Manateq - a handy library for searching and listing regions, cities and districts in Saudi Arabia"
13
+ spec.homepage = "https://github.com/nuhamozaini/Manateq"
14
+ spec.license = "MIT"
15
+
16
+
17
+ # Specify which files should be added to the gem when it is released.
18
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
19
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
20
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
21
+ end
22
+ spec.bindir = "exe"
23
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
+ spec.require_paths = ["lib"]
25
+
26
+ spec.add_development_dependency "bundler", "~> 2.0"
27
+ spec.add_development_dependency "rake", "~> 10.0"
28
+ spec.add_development_dependency "rspec", "~> 3.0"
29
+ end
metadata ADDED
@@ -0,0 +1,108 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: manateq
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - nuha almozaini
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2019-09-05 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: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
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
+ - nuha.mozaini@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
+ - CODE_OF_CONDUCT.md
66
+ - Gemfile
67
+ - Gemfile.lock
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/console
72
+ - bin/setup
73
+ - lib/manateq.rb
74
+ - lib/manateq/city.rb
75
+ - lib/manateq/data/cities.json
76
+ - lib/manateq/data/districts.json
77
+ - lib/manateq/data/regions.json
78
+ - lib/manateq/district.rb
79
+ - lib/manateq/helper.rb
80
+ - lib/manateq/region.rb
81
+ - lib/manateq/resource.rb
82
+ - lib/manateq/version.rb
83
+ - manateq.gemspec
84
+ homepage: https://github.com/nuhamozaini/Manateq
85
+ licenses:
86
+ - MIT
87
+ metadata: {}
88
+ post_install_message:
89
+ rdoc_options: []
90
+ require_paths:
91
+ - lib
92
+ required_ruby_version: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ required_rubygems_version: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ requirements: []
103
+ rubygems_version: 3.0.4
104
+ signing_key:
105
+ specification_version: 4
106
+ summary: Manateq - a handy library for searching and listing regions, cities and districts
107
+ in Saudi Arabia
108
+ test_files: []