Class: PrayerTimes::CalculationMethods

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/prayer_times/calculation_methods.rb

Overview

Helper class to initiate a list of calculation methods and add/update others

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCalculationMethods

Initializer it populates a hash with predefined set of methods



116
117
118
119
# File 'lib/prayer_times/calculation_methods.rb', line 116

def initialize
  self.hash = {}
  populate
end

Class Method Details

.default_methodsObject

default methods defined in this gem Methods MWL, ISNA, Egypt, Makkah, Karachi, Tehran and Jafari are accurate Other methods need validation. Your help is appreciated.



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
# File 'lib/prayer_times/calculation_methods.rb', line 11

def self.default_methods
  {
    "MWL" =>{
      desc: 'Muslim World League',
      settings: {fajr: 18, isha: 17}
    },
    'ISNA' => { 
      desc: 'Islamic Society of North America (ISNA)',
      settings: {fajr: 15, isha: 15}
    },
    'Egypt' => {
      desc: 'Egyptian General Authority of Survey',
      settings: {fajr: 19.5, isha: 17.5}
    },
    'Makkah' => {
        desc: 'Umm Al-Qura University, Makkah',
        settings: {fajr: 18.5, isha: '90 min'}  # fajr was 19 degrees before 1430 hijri
    },
    'Karachi' => {
      desc: 'University of Islamic Sciences, Karachi',
      settings: {fajr: 18, isha: 18}
    },
    'Tehran' => {
      desc: 'Institute of Geophysics, University of Tehran',
      settings: {fajr: 17.7, maghrib: 4.5, isha: 14, midnight: 'Jafari'}  # isha is not explicitly specified in this method
    },
   'Jafari' => {
      desc: 'Shia Ithna-Ashari, Leva Institute, Qum',
      settings: {fajr: 16, maghrib: 4, isha: 14, midnight: 'Jafari'}
    },
   'UOIF' =>{
      desc: "UNION DES ORGANISATIONS ISLAMIQUES DE FRANCE",
      settings: {fajr: 19, maghrib: '0 min', isha: 17} 
    },
    'Algeria' =>{
      desc: "Algeria",
      settings: {fajr: 18, maghrib: '3 min',  isha: 17}
    },
    'EmirateDubai' =>{
      desc: "Emirate, Dubai",
      settings: {fajr: 18.5, maghrib: '0 min',  isha: '90 min'},
      offsets: {dhuhr: 4, asr: 5, maghrib: 2}
    },
    'Emirates' =>{
      desc: "Emirates",
      settings: {fajr: 18.5, maghrib: '0 min',  isha: '90 min'},
      offsets: {asr: 4, maghrib: 2}
    },
    'EnglandBirmingham' =>{
      desc: "England, Birmingham",
      settings: {fajr: 5, maghrib: '0 min',  isha: 84},
      offsets: {fajr: -60, isha: 60}
    },
    'Jordan' =>{
      desc: "General Iftaa' Department, The Hashemite Kingdom of Jordan",
      settings: {fajr: 18, maghrib: '0 min', isha: 18} 
    },
    'Kuwait' =>{
      desc: "Kuwait",
      settings: {fajr: 18, maghrib: '0 min', isha: 17.5} 
    },
    'Libya' =>{
      desc: "Libya",
      settings: {fajr: 18.5, maghrib: '0 min',  isha: 18.5},
      offsets: { dhuhr: 4, maghrib: 4}
    },
    'Malaysia' =>{
      desc: "Malaysia",
      settings: {fajr: 20, maghrib: '0 min',  isha: 18},
      offsets: {fajr: 3, sunrise: 2, dhuhr: 1, asr: 2, maghrib: 1, isha: -1}
    },
    'Maldives' =>{
      desc: "Maldives",
      settings: {fajr: 19, maghrib: '0 min',  isha: 19},
      offsets: {sunrise: -1, dhuhr: 4, asr: 1, maghrib: 1, isha: 1}
    },
    'Morocco' =>{
      desc: "Morocco",
      settings: {fajr: 19, maghrib: '0 min',  isha: 17},
      offsets:  {fajr: -1, sunrise: -2, dhuhr: 5, maghrib: 3}
    },
    'Oman' =>{
      desc: "Oman",
      settings: {fajr: 18, maghrib: '5 min',  isha: 18},
      offsets: {dhuhr: 5, asr: 5, isha: 1}
    },
    'Qatar' =>{
      desc: "Qatar",
      settings: {fajr: 18, maghrib: '0 min',  isha: '90 min'}
    },
    'Tunisia' =>{
      desc: "Tunisia",
      settings: {fajr: 18, maghrib: '1 min',  isha: 18},
      offsets:  {fajr: -1, sunrise: -2, dhuhr: 8, isha: 1}
    },
    'Turkey' =>{
      desc: "Presidency of Religious Affairs, Turkey",
      settings: {fajr: 18, maghrib: '9 min',  isha: 17},
      offsets: {fajr: -2, sunrise: -7, dhuhr: 6, asr: 4, isha: 2}
    }
  }
end

Instance Method Details

#add(name, description, settings = {}, offsets = {}) ⇒ Object

Parameters:

  • name (String)
  • description (String)
  • settings (Hash) (defaults to: {})
  • offsets (Hash) (defaults to: {})

See Also:



126
127
128
# File 'lib/prayer_times/calculation_methods.rb', line 126

def add(name, description, settings={}, offsets={})
  hash[name] = CalculationMethod.new(name, description, settings, offsets)
end

#namesArray

Names of the available methods

Returns:

  • (Array)

    list of names



132
133
134
# File 'lib/prayer_times/calculation_methods.rb', line 132

def names
  keys
end