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.
- data/.gitignore +4 -0
- data/.yardoc/checksums +5 -0
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/.yardoc/proxy_types +0 -0
- data/Gemfile +4 -0
- data/README.md +15 -0
- data/Rakefile +1 -0
- data/doc/QuranData.html +192 -0
- data/doc/Rquran.html +774 -0
- data/doc/Rquran/Mixin.html +186 -0
- data/doc/Rquran/Mixin/ClassMethods.html +228 -0
- data/doc/Rquran/Mixin/InstanceMethods.html +105 -0
- data/doc/_index.html +168 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +328 -0
- data/doc/file.README.html +73 -0
- data/doc/file_list.html +55 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +73 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +148 -0
- data/doc/top-level-namespace.html +112 -0
- data/lib/rquran.rb +4 -0
- data/lib/rquran/quran_data.rb +18 -0
- data/lib/rquran/rquran.rb +77 -0
- data/lib/rquran/rquran_mixin.rb +46 -0
- data/lib/rquran/version.rb +4 -0
- data/rquran.gemspec +24 -0
- metadata +79 -0
@@ -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
|
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:
|