Code Monkey home page Code Monkey logo

itl's Introduction

ITL

Build Status

The Islamic Tools and Libraries (ITL) project provides a fully featured library for performing common Islamic calculations.

ITL is currently composed of two library-modules:

  • prayertime: Geographically-aware prayer time and Qibla calculation routines.
  • hijri: Hijri date generation/calculation and conversion routines.

Installation

Perform the following commands:

Alternatively, one can build using the autoconf build system as follows:

  • autoreconf -f -i
  • ./configure
  • make
  • make check (optional to run tests)
  • make install (optional)

Other Languages

Language Type URL
PHP Official port https://github.com/arabeyes-org/ITL-ports
Obj-C Unofficial interface https://github.com/batoulapps/BAPrayerTimes
Java Unofficial port https://github.com/fikr4n/itl-java
GObject Unofficial interface https://github.com/aelmahmoudy/libitl-gobject

itl's People

Contributors

aelmahmoudy avatar arabeyes avatar djdelorierh avatar linostar avatar mohamed avatar ssoulaimane avatar z3bi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

itl's Issues

Add Travis CI badge to the readme

We can add a badge to show the current Travis CI build status. Here is the markdown code:

[![Build Status](https://travis-ci.org/arabeyes-org/ITL.svg?branch=master)](https://travis-ci.org/arabeyes-org/ITL)

It makes a badge like this

Build Status

Java Port

It seems that someone has taken the time to port this to Java: http://github.com/fikr4n/itl-java

In the project README, maybe we should include a list of official and unofficial bindings or ports of this project?

Test Suite

Now that this project has been moved to github (thanks for moving it), I think the next step should be creating a test suite. Ideally it would involve calculating prayer times for different locations and different methods and comparing them to known times. We could integrate these tests with https://travis-ci.org/ so that each commit is tested and people know that the calculations have not been broken.

UOIF Calculation Method

One of the users of my prayer time app recently requested the addition of the UOIF calculation method as it is the predominant method in France. Doing some research, I found this article explaining their position http://www.uoif-online.com/pourquoi-le-12eme-degre-de-latitude-pour-determiner-lhoraire-du-ichaa-du-soubh/

They are using 12 degrees for Fajr and Isha in order to create more reasonable times. I was wondering if anyone had any input on whether this method should be added to the available calculations methods in the library.

Project homepage ?

Which is the proper project webpage ? The one on Arabeyes isn't updated (latest release is 0.7.0). So is the Github page the new one ?

Egypt General Authority of Survey

There are two entries under "Egypt General Authority of Survey" in the method README.

1. Egyptian General Authority of Survey

Fajr Angle: 20
Ishaa Angle: 18
Used in: Indonesia, Iraq, Jordan, Lebanon, Malaysia, Singapore, Syria, parts of Africa, parts of the United States
....

8. Egyptian General Authority of Survey (Egypt)

Fajr Angle: 19.5
Ishaa Angle: 17.5
Used in: Egypt

Which one is correct?

DST needs correction

Current dst-start doesn't sense the very day on which the change occurs.
example from my .iprayrc
dst-start:20210328020000
dst-end:20211031030000
Time will be forwarded 1 hour on March 28th 2021 but this is the results of ipraytime --year 2021 --month 03
[27-03-2021] 4:19 6:02 12:18 15:47 18:35 20:11
[28-03-2021] 4:17 6:00 12:18 15:48 18:37 20:13
[29-03-2021] 5:15 6:58 13:18 16:49 19:38 21:14
The change will take effect on March 29th 2021

Only solution for the time being is insert wrong values 1 day prior to the real change of time to meet the right prayer times.

Suggested fix: add an exact hour field for the program to know when the time changes precisely.

Moving from github to gitorious

Hey everyone,

I recently received some concerns about the repo being hosted on github. Among the many concerns, there is "github platform is not open source itself", and some of the disturbing terms in github's TOS such as:

"D.4. GitHub, in its sole discretion, has the right to suspend or terminate your account and refuse any and all current or future use of the Service, or any other GitHub service, for any reason at any time. Such termination of the Service will result in the deactivation or deletion of your Account or your access to your Account, and the forfeiture and relinquishment of all Content in your Account. GitHub reserves the right to refuse service to anyone for any reason at any time".

Gitorious.org was proposed, which is an open source alternative for github, possessing almost the same great features, and hosting many famous FOSS projects like Qt and OpenSuse.

So, tell me guys what do you think.

The clarification of the difference between G2H and and h_date (Documentation)

Hello everyone.

I'm trying to use ITL to convert Gregorian dates to their Hijri counterparts. Looking at hijri.h, the header defines two different functions that seem to do what I want. Perplexingly though, these two functions yield different results: Running demo_hijri.c on my system gives 23/8 for h_date and 24/8 for G2H.

What is the difference between these two functions? and which of these two functions should application developers use to convert Gregorian dates?

hijri.h should probably include a description of these differences as well.

Extreme latitude methods

I have a question about extreme latitude methods implementation in praytime. What is the criteria for setting Fajr/Isha time to "invalid"?

Move programs/ and ports/ into separate repos

programs/ and ports/ have different requirements than libs/ and require different build steps. Therefore, I would suggest to move them into separate repos. This will simplify ITL and make the maintenance easier.

swig and debian directories

Do the swig and debian directories belong in this repo? It seems like swig should be moved to the ports repo and the debian directory should be moved to the programs repo.

`ical` does not update at Maghrib

ical appears to be a pure map from Gregorian to Hijri, when the shown Hijri date should be based on whether Maghrib has passed.

Also, is there a way to set a source to override dates from in ical? Today should be 30 Shaban (no moon sighting) but the calendar is currently based on the last stored projection which bases today as 1 Ramadan.

Make library thread-safe

At present, the library contains a race condition that results in incorrect times when getPrayerTimes is called from multiple threads and varying coordinates. By moving the global shared state into the function as a local variable as suggested by the author, this issue is resolved.

This also enables better performance by making it possible to scale horizontally by parallelizing the workloads.

Thank you for your continued efforts.

Umm Al-Qurra method does not handle Ramadan correctly

The Umm Al-Qurra method currently always has a fixed interval of 90 minutes, however in Ramadan this interval is 120 minutes. I am happy to write the fix for this, but I am interested in hearing the best way to do this.

Because the hijri calendar is not fixed, this should be something in the conf. Perhaps a isRamadan flag?

JavaScript port

I am currently using praytimes but was wondering if there is any effort to port this in to JS. I didn't see anything on the ports repo.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.