rquran 1.0.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,77 @@
1
+ module Rquran
2
+ include QuranData
3
+
4
+ def self.sura_name(sura)
5
+ SuraNames[sura]
6
+ end
7
+
8
+ def self.page_for_ayah(sura, relative_ayah_index)
9
+ page = 0
10
+ Pages.each do |p|
11
+ next if p.empty?
12
+ page += 1
13
+ if p[0] == sura and p[1]==relative_ayah_index then
14
+ return page
15
+ elsif p[0] > sura then
16
+ return page - 1
17
+ elsif p[0]==sura and p[1] > relative_ayah_index
18
+ return page - 1
19
+ end
20
+ end
21
+ end
22
+
23
+ def self.page_for_absolute_ayah(absolute_ayah_index)
24
+ page_for_ayah( sura_for_ayah(absolute_ayah_index) , relative_ayah_refernce(absolute_ayah_index) )
25
+ end
26
+
27
+ def self.absolute_index_for_ayah(sura,relative_ayah_index)
28
+ Suras[sura][1]+relative_ayah_refernce-1
29
+ end
30
+
31
+ def self.juzu_for_ayah(sura,relative_ayah_index)
32
+ juzu = 0
33
+ Juzus[1..31].each do |j|
34
+ juzu += 1
35
+ if j[0] == sura and j[1] == relative_ayah_index
36
+ return juzu
37
+ elsif j[0] > sura
38
+ return juzu - 1
39
+ elsif j[0] == sura and j[1]> relative_ayah_index
40
+ return juzu - 1
41
+ end
42
+ end
43
+ end
44
+
45
+ def self.sura_for_ayah(absolute_ayah_index)
46
+ return nil if not valid_absolute_ayah(absolute_ayah_index)
47
+ surah = 0
48
+ Suras.each do |s|
49
+ if !s.empty?
50
+ if s[1] + s[2] - 1 >= absolute_ayah_index
51
+ break
52
+ end
53
+ end
54
+ surah += 1
55
+ end
56
+ return surah
57
+ end
58
+
59
+ def self.relative_for_ayah(absolute_ayah_index)
60
+ return nil if not valid_absolute_ayah(absolute_ayah_index)
61
+ surah = sura_for_ayah(absolute_ayah_index)
62
+ return absolute_ayah_index - Suras[surah][1]+1
63
+ end
64
+
65
+ def self.juzu_for_absolute_ayah_index(absolute_ayah_index)
66
+ juzu_for_ayah(sura_for_ayah(absolute_ayah_index),relative_for_ayah(absolute_ayah_index))
67
+ end
68
+
69
+ # an ayah is valid if the sura is between 1 and 114 and ayah is <= number of ayas in that sura
70
+ def self.valid_ayah(sura,ayah)
71
+ (1..114).include?(sura) and (1..Suras[sura][2]).include?(ayah)
72
+ end
73
+
74
+ def self.valid_absolute_ayah(absolute_ayah_index)
75
+ (0..6235).include?(absolute_ayah_index)
76
+ end
77
+ end
@@ -0,0 +1,46 @@
1
+ module Rquran
2
+ module Mixin
3
+ module ClassMethods
4
+ # enables an object to have a property that acts as an ayah reference with all releated methods.
5
+ def has_ayah(*args)
6
+ args.each do |aya_var|
7
+ attr_accessor aya_var
8
+ define_method aya_var.to_s + "_ayah" do
9
+ val = send(aya_var)
10
+ return nil if val.nil?
11
+ val.class == Array ? val[1] : (Rquran.relative_for_ayah(val))
12
+ end
13
+ define_method aya_var.to_s + "_sura" do
14
+ val = send(aya_var)
15
+ return nil if val.nil?
16
+ val.class == Array ? val[0] : (Rquran.sura_for_ayah(val))
17
+ end
18
+ define_method aya_var.to_s + "_sura_name" do
19
+ val = send(aya_var)
20
+ return nil if val.nil?
21
+ val.class == Array ? Rquran.sura_name(val[0]) : Rquran.sura_name(send(aya_var.to_s+"_sura"))
22
+ end
23
+ define_method aya_var.to_s+"_valid?" do
24
+ val = send(aya_var)
25
+ return nil if val.nil?
26
+ Rquran.valid_ayah(send(aya_var.to_s+"_sura") , send(aya_var.to_s+"_ayah"))
27
+ end
28
+ define_method aya_var.to_s + "_juzu" do
29
+ val = send(aya_var)
30
+ return nil if val.nil?
31
+ Rquran.juzu_for_ayah(send(aya_var.to_s+"_sura") , send(aya_var.to_s+"_ayah"))
32
+ end
33
+ end
34
+ end
35
+ end
36
+
37
+ module InstanceMethods
38
+
39
+ end
40
+
41
+ def self.included(receiver)
42
+ receiver.extend ClassMethods
43
+ receiver.send :include, InstanceMethods
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,4 @@
1
+ module Rquran
2
+ VERSION = "1.0.0"
3
+ end
4
+
data/rquran.gemspec ADDED
@@ -0,0 +1,24 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "rquran/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "rquran"
7
+ s.version = Rquran::VERSION
8
+ s.authors = ["Abdulaziz Alnutaifi"]
9
+ s.email = ["abdulaziz.alnutaifi@me.com"]
10
+ s.homepage = ""
11
+ s.summary = %q{Gem for Quran related calculations, meta-data}
12
+ s.description = %q{Gem for quran related calculations, meta-data}
13
+
14
+ s.rubyforge_project = "rquran"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ # s.add_runtime_dependency "rest-client"
24
+ end
metadata ADDED
@@ -0,0 +1,79 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rquran
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Abdulaziz Alnutaifi
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-01-18 00:00:00.000000000 Z
13
+ dependencies: []
14
+ description: Gem for quran related calculations, meta-data
15
+ email:
16
+ - abdulaziz.alnutaifi@me.com
17
+ executables: []
18
+ extensions: []
19
+ extra_rdoc_files: []
20
+ files:
21
+ - .gitignore
22
+ - .yardoc/checksums
23
+ - .yardoc/object_types
24
+ - .yardoc/objects/root.dat
25
+ - .yardoc/proxy_types
26
+ - Gemfile
27
+ - README.md
28
+ - Rakefile
29
+ - doc/QuranData.html
30
+ - doc/Rquran.html
31
+ - doc/Rquran/Mixin.html
32
+ - doc/Rquran/Mixin/ClassMethods.html
33
+ - doc/Rquran/Mixin/InstanceMethods.html
34
+ - doc/_index.html
35
+ - doc/class_list.html
36
+ - doc/css/common.css
37
+ - doc/css/full_list.css
38
+ - doc/css/style.css
39
+ - doc/file.README.html
40
+ - doc/file_list.html
41
+ - doc/frames.html
42
+ - doc/index.html
43
+ - doc/js/app.js
44
+ - doc/js/full_list.js
45
+ - doc/js/jquery.js
46
+ - doc/method_list.html
47
+ - doc/top-level-namespace.html
48
+ - lib/rquran.rb
49
+ - lib/rquran/quran_data.rb
50
+ - lib/rquran/rquran.rb
51
+ - lib/rquran/rquran_mixin.rb
52
+ - lib/rquran/version.rb
53
+ - rquran.gemspec
54
+ homepage: ''
55
+ licenses: []
56
+ post_install_message:
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ required_rubygems_version: !ruby/object:Gem::Requirement
67
+ none: false
68
+ requirements:
69
+ - - ! '>='
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
72
+ requirements: []
73
+ rubyforge_project: rquran
74
+ rubygems_version: 1.8.24
75
+ signing_key:
76
+ specification_version: 3
77
+ summary: Gem for Quran related calculations, meta-data
78
+ test_files: []
79
+ has_rdoc: