Module: Calendrical

Defined in:
ext/calendrical/calendricalmodule.c

Constant Summary collapse

VERSION =
rb_obj_freeze(rb_str_new2("$Revision: 1.16 $"))

Class Method Summary collapse

Class Method Details

.bahai_last_day_of_month(y, m) ⇒ Object



835
836
837
838
839
840
841
842
843
844
# File 'ext/calendrical/calendricalmodule.c', line 835

static VALUE
calendrical_bahai_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 20);
    iy = NUM2INT(y);
    md = bahai_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.bahai_leap_year(y) ⇒ Object



825
826
827
828
829
830
831
832
833
# File 'ext/calendrical/calendricalmodule.c', line 825

static VALUE
calendrical_bahai_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = bahai_leap_year(iy);
    return INT2BOOL(l);
}

.bahai_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


825
826
827
828
829
830
831
832
833
# File 'ext/calendrical/calendricalmodule.c', line 825

static VALUE
calendrical_bahai_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = bahai_leap_year(iy);
    return INT2BOOL(l);
}

.bahai_to_rd(y, m, md) ⇒ Object



846
847
848
849
850
851
852
853
854
855
856
857
858
859
# File 'ext/calendrical/calendricalmodule.c', line 846

static VALUE
calendrical_bahai_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 20);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 19);
    iy = NUM2INT(y);
    a = bahai_to_rd(iy, im, imd);
    rd_to_bahai(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.bahai_vahid_to_year(k, v, y) ⇒ Object



881
882
883
884
885
886
887
888
889
890
891
# File 'ext/calendrical/calendricalmodule.c', line 881

static VALUE
calendrical_bahai_vahid_to_year(VALUE obj, VALUE k, VALUE v, VALUE y)
{
    int ik, iv, iy, iy2;

    ik = NUM2INT(k);
    iv = NUM2INT(v); CHECK_DOMAIN2(iv, 1, 19);
    iy = NUM2INT(y); CHECK_DOMAIN2(iy, 1, 19);
    iy2 = bahai_vahid_to_year(ik, iv, iy);
    return INT2NUM(iy2);
}

.bahai_year_to_vahid(y) ⇒ Object



871
872
873
874
875
876
877
878
879
# File 'ext/calendrical/calendricalmodule.c', line 871

static VALUE
calendrical_bahai_year_to_vahid(VALUE obj, VALUE y)
{
    int iy, k, v, iy2;

    iy = NUM2INT(y);
    bahai_year_to_vahid(iy, &k, &v, &iy2);
    return rb_ary_new3(3, INT2NUM(k), INT2NUM(v), INT2NUM(iy2));
}

.bengali_last_day_of_month(y, m) ⇒ Object



949
950
951
952
953
954
955
956
957
958
# File 'ext/calendrical/calendricalmodule.c', line 949

static VALUE
calendrical_bengali_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = bengali_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.bengali_leap_year(y) ⇒ Object



939
940
941
942
943
944
945
946
947
# File 'ext/calendrical/calendricalmodule.c', line 939

static VALUE
calendrical_bengali_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = bengali_leap_year(iy);
    return INT2BOOL(l);
}

.bengali_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


939
940
941
942
943
944
945
946
947
# File 'ext/calendrical/calendricalmodule.c', line 939

static VALUE
calendrical_bengali_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = bengali_leap_year(iy);
    return INT2BOOL(l);
}

.bengali_to_rd(y, m, md) ⇒ Object



960
961
962
963
964
965
966
967
968
969
970
971
972
973
# File 'ext/calendrical/calendricalmodule.c', line 960

static VALUE
calendrical_bengali_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = bengali_to_rd(iy, im, imd);
    rd_to_bengali(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.coptic_last_day_of_month(y, m) ⇒ Object



697
698
699
700
701
702
703
704
705
706
# File 'ext/calendrical/calendricalmodule.c', line 697

static VALUE
calendrical_coptic_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    iy = NUM2INT(y);
    md = coptic_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.coptic_leap_year(y) ⇒ Object



687
688
689
690
691
692
693
694
695
# File 'ext/calendrical/calendricalmodule.c', line 687

static VALUE
calendrical_coptic_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = coptic_leap_year(iy);
    return INT2BOOL(l);
}

.coptic_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


687
688
689
690
691
692
693
694
695
# File 'ext/calendrical/calendricalmodule.c', line 687

static VALUE
calendrical_coptic_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = coptic_leap_year(iy);
    return INT2BOOL(l);
}

.coptic_to_rd(y, m, md) ⇒ Object



708
709
710
711
712
713
714
715
716
717
718
719
720
721
# File 'ext/calendrical/calendricalmodule.c', line 708

static VALUE
calendrical_coptic_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = coptic_to_rd(iy, im, imd);
    rd_to_coptic(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.easter(y) ⇒ Object



330
331
332
333
334
335
336
337
338
# File 'ext/calendrical/calendricalmodule.c', line 330

static VALUE
calendrical_easter(VALUE obj, VALUE y)
{
    int iy, a;

    iy = NUM2INT(y);
    a = easter(iy);
    return INT2NUM(a);
}

.ethiopian_last_day_of_month(y, m) ⇒ Object



743
744
745
746
747
748
749
750
751
752
# File 'ext/calendrical/calendricalmodule.c', line 743

static VALUE
calendrical_ethiopian_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    iy = NUM2INT(y);
    md = ethiopian_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.ethiopian_leap_year(y) ⇒ Object



733
734
735
736
737
738
739
740
741
# File 'ext/calendrical/calendricalmodule.c', line 733

static VALUE
calendrical_ethiopian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = ethiopian_leap_year(iy);
    return INT2BOOL(l);
}

.ethiopian_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


733
734
735
736
737
738
739
740
741
# File 'ext/calendrical/calendricalmodule.c', line 733

static VALUE
calendrical_ethiopian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = ethiopian_leap_year(iy);
    return INT2BOOL(l);
}

.ethiopian_to_rd(y, m, md) ⇒ Object



754
755
756
757
758
759
760
761
762
763
764
765
766
767
# File 'ext/calendrical/calendricalmodule.c', line 754

static VALUE
calendrical_ethiopian_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = ethiopian_to_rd(iy, im, imd);
    rd_to_ethiopian(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.french_last_day_of_month(y, m) ⇒ Object



466
467
468
469
470
471
472
473
474
475
# File 'ext/calendrical/calendricalmodule.c', line 466

static VALUE
calendrical_french_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    iy = NUM2INT(y);
    md = french_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.french_leap_year(y) ⇒ Object



456
457
458
459
460
461
462
463
464
# File 'ext/calendrical/calendricalmodule.c', line 456

static VALUE
calendrical_french_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = french_leap_year(iy);
    return INT2BOOL(l);
}

.french_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


456
457
458
459
460
461
462
463
464
# File 'ext/calendrical/calendricalmodule.c', line 456

static VALUE
calendrical_french_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = french_leap_year(iy);
    return INT2BOOL(l);
}

.french_to_rd(y, m, md) ⇒ Object



477
478
479
480
481
482
483
484
485
486
487
488
489
490
# File 'ext/calendrical/calendricalmodule.c', line 477

static VALUE
calendrical_french_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = french_to_rd(iy, im, imd);
    rd_to_french(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.gregorian_last_day_of_month(y, m) ⇒ Object



45
46
47
48
49
50
51
52
53
54
# File 'ext/calendrical/calendricalmodule.c', line 45

static VALUE
calendrical_gregorian_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = gregorian_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.gregorian_leap_year(y) ⇒ Object



35
36
37
38
39
40
41
42
43
# File 'ext/calendrical/calendricalmodule.c', line 35

static VALUE
calendrical_gregorian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = gregorian_leap_year(iy);
    return INT2BOOL(l);
}

.gregorian_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
38
39
40
41
42
43
# File 'ext/calendrical/calendricalmodule.c', line 35

static VALUE
calendrical_gregorian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = gregorian_leap_year(iy);
    return INT2BOOL(l);
}

.gregorian_to_rd(y, m, md) ⇒ Object



56
57
58
59
60
61
62
63
64
65
66
67
68
69
# File 'ext/calendrical/calendricalmodule.c', line 56

static VALUE
calendrical_gregorian_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = gregorian_to_rd(iy, im, imd);
    rd_to_gregorian(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.hebrew_calendar_elapsed_days(y) ⇒ Object



240
241
242
243
244
245
246
247
248
# File 'ext/calendrical/calendricalmodule.c', line 240

static VALUE
calendrical_hebrew_calendar_elapsed_days(VALUE obj, VALUE y)
{
    int iy, d;

    iy = NUM2INT(y);
    d = hebrew_calendar_elapsed_days(iy);
    return INT2NUM(d);
}

.hebrew_days_in_year(y) ⇒ Object



250
251
252
253
254
255
256
257
258
# File 'ext/calendrical/calendricalmodule.c', line 250

static VALUE
calendrical_hebrew_days_in_year(VALUE obj, VALUE y)
{
    int iy, d;

    iy = NUM2INT(y);
    d = hebrew_days_in_year(iy);
    return INT2NUM(d);
}

.hebrew_last_day_of_month(y, m) ⇒ Object



229
230
231
232
233
234
235
236
237
238
# File 'ext/calendrical/calendricalmodule.c', line 229

static VALUE
calendrical_hebrew_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    iy = NUM2INT(y);
    md = hebrew_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.hebrew_last_month_of_year(y) ⇒ Object



219
220
221
222
223
224
225
226
227
# File 'ext/calendrical/calendricalmodule.c', line 219

static VALUE
calendrical_hebrew_last_month_of_year(VALUE obj, VALUE y)
{
    int iy, m;

    iy = NUM2INT(y);
    m = hebrew_last_month_of_year(iy);
    return INT2NUM(m);
}

.hebrew_leap_year(y) ⇒ Object



209
210
211
212
213
214
215
216
217
# File 'ext/calendrical/calendricalmodule.c', line 209

static VALUE
calendrical_hebrew_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = hebrew_leap_year(iy);
    return INT2BOOL(l);
}

.hebrew_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


209
210
211
212
213
214
215
216
217
# File 'ext/calendrical/calendricalmodule.c', line 209

static VALUE
calendrical_hebrew_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = hebrew_leap_year(iy);
    return INT2BOOL(l);
}

.hebrew_to_rd(y, m, md) ⇒ Object



280
281
282
283
284
285
286
287
288
289
290
291
292
293
# File 'ext/calendrical/calendricalmodule.c', line 280

static VALUE
calendrical_hebrew_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 13);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = hebrew_to_rd(iy, im, imd);
    rd_to_hebrew(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.indian_national_last_day_of_month(y, m) ⇒ Object



903
904
905
906
907
908
909
910
911
912
# File 'ext/calendrical/calendricalmodule.c', line 903

static VALUE
calendrical_indian_national_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = indian_national_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.indian_national_leap_year(y) ⇒ Object



893
894
895
896
897
898
899
900
901
# File 'ext/calendrical/calendricalmodule.c', line 893

static VALUE
calendrical_indian_national_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = indian_national_leap_year(iy);
    return INT2BOOL(l);
}

.indian_national_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


893
894
895
896
897
898
899
900
901
# File 'ext/calendrical/calendricalmodule.c', line 893

static VALUE
calendrical_indian_national_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = indian_national_leap_year(iy);
    return INT2BOOL(l);
}

.indian_national_to_rd(y, m, md) ⇒ Object



914
915
916
917
918
919
920
921
922
923
924
925
926
927
# File 'ext/calendrical/calendricalmodule.c', line 914

static VALUE
calendrical_indian_national_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = indian_national_to_rd(iy, im, imd);
    rd_to_indian_national(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.islamic_last_day_of_month(y, m) ⇒ Object



173
174
175
176
177
178
179
180
181
182
# File 'ext/calendrical/calendricalmodule.c', line 173

static VALUE
calendrical_islamic_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = islamic_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.islamic_leap_year(y) ⇒ Object



163
164
165
166
167
168
169
170
171
# File 'ext/calendrical/calendricalmodule.c', line 163

static VALUE
calendrical_islamic_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = islamic_leap_year(iy);
    return INT2BOOL(l);
}

.islamic_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


163
164
165
166
167
168
169
170
171
# File 'ext/calendrical/calendricalmodule.c', line 163

static VALUE
calendrical_islamic_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = islamic_leap_year(iy);
    return INT2BOOL(l);
}

.islamic_to_rd(y, m, md) ⇒ Object



184
185
186
187
188
189
190
191
192
193
194
195
196
197
# File 'ext/calendrical/calendricalmodule.c', line 184

static VALUE
calendrical_islamic_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = islamic_to_rd(iy, im, imd);
    rd_to_islamic(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.iso_to_rd(y, w, wd) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'ext/calendrical/calendricalmodule.c', line 92

static VALUE
calendrical_iso_to_rd(VALUE obj, VALUE y, VALUE w, VALUE wd)
{
    int iy, iw, iwd, a, iy2, iw2, iwd2;

    iw = NUM2INT(w); CHECK_DOMAIN2(iw, 1, 53);
    iwd = NUM2INT(wd); CHECK_DOMAIN2(iwd, 1, 7);
    iy = NUM2INT(y);
    a = iso_to_rd(iy, iw, iwd);
    rd_to_iso(a, &iy2, &iw2, &iwd2);
    if (iw != iw2 || iwd != iwd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.jalali_last_day_of_month(y, m) ⇒ Object



789
790
791
792
793
794
795
796
797
798
# File 'ext/calendrical/calendricalmodule.c', line 789

static VALUE
calendrical_jalali_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = jalali_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.jalali_leap_year(y) ⇒ Object



779
780
781
782
783
784
785
786
787
# File 'ext/calendrical/calendricalmodule.c', line 779

static VALUE
calendrical_jalali_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = jalali_leap_year(iy);
    return INT2BOOL(l);
}

.jalali_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


779
780
781
782
783
784
785
786
787
# File 'ext/calendrical/calendricalmodule.c', line 779

static VALUE
calendrical_jalali_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = jalali_leap_year(iy);
    return INT2BOOL(l);
}

.jalali_to_rd(y, m, md) ⇒ Object



800
801
802
803
804
805
806
807
808
809
810
811
812
813
# File 'ext/calendrical/calendricalmodule.c', line 800

static VALUE
calendrical_jalali_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = jalali_to_rd(iy, im, imd);
    rd_to_jalali(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.jd_to_mjd(j) ⇒ Object



1106
1107
1108
1109
1110
1111
1112
1113
1114
# File 'ext/calendrical/calendricalmodule.c', line 1106

static VALUE
calendrical_jd_to_mjd(VALUE obj, VALUE j)
{
    int ij, m;

    ij = NUM2INT(j);
    m = jd_to_mjd(ij);
    return INT2NUM(m);
}

.jd_to_rd(j) ⇒ Object



1055
1056
1057
1058
1059
1060
1061
1062
1063
# File 'ext/calendrical/calendricalmodule.c', line 1055

static VALUE
calendrical_jd_to_rd(VALUE obj, VALUE j)
{
    int ij, a;

    ij = NUM2INT(j);
    a = jd_to_rd(ij);
    return INT2NUM(a);
}

.julian_last_day_of_month(y, m) ⇒ Object



127
128
129
130
131
132
133
134
135
136
# File 'ext/calendrical/calendricalmodule.c', line 127

static VALUE
calendrical_julian_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = julian_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.julian_leap_year(y) ⇒ Object



117
118
119
120
121
122
123
124
125
# File 'ext/calendrical/calendricalmodule.c', line 117

static VALUE
calendrical_julian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = julian_leap_year(iy);
    return INT2BOOL(l);
}

.julian_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


117
118
119
120
121
122
123
124
125
# File 'ext/calendrical/calendricalmodule.c', line 117

static VALUE
calendrical_julian_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = julian_leap_year(iy);
    return INT2BOOL(l);
}

.julian_to_rd(y, m, md) ⇒ Object



138
139
140
141
142
143
144
145
146
147
148
149
150
151
# File 'ext/calendrical/calendricalmodule.c', line 138

static VALUE
calendrical_julian_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = julian_to_rd(iy, im, imd);
    rd_to_julian(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.kday_on_or_before(a, k) ⇒ Object



81
82
83
84
85
86
87
88
89
90
# File 'ext/calendrical/calendricalmodule.c', line 81

static VALUE
calendrical_kday_on_or_before(VALUE obj, VALUE a, VALUE k)
{
    int ia, ik, b;

    ia = NUM2INT(a);
    ik = NUM2INT(k); CHECK_DOMAIN2(ik, 0, 6);
    b = kday_on_or_before(ia, NUM2INT(k));
    return INT2NUM(b);
}

.kyureki_to_rd(y, m, l, md) ⇒ Object



1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
# File 'ext/calendrical/calendricalmodule.c', line 1146

static VALUE
calendrical_kyureki_to_rd(VALUE obj, VALUE y, VALUE m, VALUE l, VALUE md)
{
    int j, a;
    QDATE q, q2;

    q.j = 0;
    q.y = NUM2INT(y);
    q.yd = 0;
    q.m = NUM2INT(m); CHECK_DOMAIN2(q.m, 1, 12);
    q.md = NUM2INT(md); CHECK_DOMAIN2(q.md, 1, 30);
    q.wd = 0;
    q.leap = BOOL2INT(l);
    j = rqref(&q);
    if (j == 0)
  rb_raise(rb_eArgError, "invalid date");
    a = jd_to_rd(j);
    qref(j, &q2);
    if (q.y != q2.y || q.m != q2.m || q.md != q2.md || q.leap != q2.leap)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.ld_to_rd(l) ⇒ Object



1116
1117
1118
1119
1120
1121
1122
1123
1124
# File 'ext/calendrical/calendricalmodule.c', line 1116

static VALUE
calendrical_ld_to_rd(VALUE obj, VALUE l)
{
    int il, a;

    il = NUM2INT(l);
    a = ld_to_rd(il);
    return INT2NUM(a);
}

.long_heshvan(y) ⇒ Object



260
261
262
263
264
265
266
267
268
# File 'ext/calendrical/calendricalmodule.c', line 260

static VALUE
calendrical_long_heshvan(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = long_heshvan(iy);
    return INT2BOOL(l);
}

.long_heshvan?(y) ⇒ Boolean

Returns:

  • (Boolean)


260
261
262
263
264
265
266
267
268
# File 'ext/calendrical/calendricalmodule.c', line 260

static VALUE
calendrical_long_heshvan(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = long_heshvan(iy);
    return INT2BOOL(l);
}

.lunar_longitude(d) ⇒ Object



557
558
559
560
561
562
563
564
# File 'ext/calendrical/calendricalmodule.c', line 557

static VALUE
calendrical_lunar_longitude(VALUE obj, VALUE d)
{
    double l;

    l = lunar_longitude(getfloat(d));
    return rb_float_new(l);
}

.lunar_phase(d) ⇒ Object



566
567
568
569
570
571
572
573
# File 'ext/calendrical/calendricalmodule.c', line 566

static VALUE
calendrical_lunar_phase(VALUE obj, VALUE d)
{
    double p;

    p = lunar_phase(getfloat(d));
    return rb_float_new(p);
}

.mayan_haab_differenceObject



379
380
381
382
383
384
385
386
387
388
389
390
391
# File 'ext/calendrical/calendricalmodule.c', line 379

static VALUE
calendrical_mayan_haab_difference
(VALUE obj, VALUE m1, VALUE md1, VALUE m2, VALUE md2)
{
    int imd1, im1, imd2, im2, d;

    im1 = NUM2INT(m1); CHECK_DOMAIN2(im1, 1, 19);
    imd1 = NUM2INT(md1); CHECK_DOMAIN2(imd1, 0, (im1 == 19) ? 4 : 19);
    im2 = NUM2INT(m2); CHECK_DOMAIN2(im2, 1, 19);
    imd2 = NUM2INT(md2); CHECK_DOMAIN2(imd2, 0, (im2 == 19) ? 4 : 19);
    d = mayan_haab_difference(im1, imd1, im2, imd2);
    return INT2NUM(d);
}

.mayan_haab_on_or_before(m, md, a) ⇒ Object



393
394
395
396
397
398
399
400
401
402
403
# File 'ext/calendrical/calendricalmodule.c', line 393

static VALUE
calendrical_mayan_haab_on_or_before(VALUE obj, VALUE m, VALUE md, VALUE a)
{
    int imd, im, ia, d;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 19);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 0, (im == 19) ? 4 : 19);
    ia = NUM2INT(a);
    d = mayan_haab_on_or_before(im, imd, ia);
    return INT2NUM(d);
}

.mayan_haab_tzolkin_on_or_beforeObject



441
442
443
444
445
446
447
448
449
450
451
452
453
454
# File 'ext/calendrical/calendricalmodule.c', line 441

static VALUE
calendrical_mayan_haab_tzolkin_on_or_before
(VALUE obj, VALUE m, VALUE md, VALUE na, VALUE nu, VALUE a)
{
    int imd, im, inu, ina, ia, d;

    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 0, 19);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 19);
    inu = NUM2INT(nu); CHECK_DOMAIN2(inu, 1, 13);
    ina = NUM2INT(na); CHECK_DOMAIN2(ina, 1, 20);
    ia = NUM2INT(a);
    d = mayan_haab_tzolkin_on_or_before(im, imd, ina, inu, ia);
    return INT2NUM(d);
}

.mayan_long_count_to_rdObject



340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
# File 'ext/calendrical/calendricalmodule.c', line 340

static VALUE
calendrical_mayan_long_count_to_rd
(VALUE obj, VALUE bt, VALUE kt, VALUE t, VALUE u, VALUE k)
{
    int ibt, ikt, it, iu, ik, a, ibt2, ikt2, it2, iu2, ik2;

    ibt = NUM2INT(bt);
    ikt = NUM2INT(kt); CHECK_DOMAIN2(ikt, 0, 19);
    it = NUM2INT(t); CHECK_DOMAIN2(it, 0, 19);
    iu = NUM2INT(u); CHECK_DOMAIN2(iu, 0, 17);
    ik = NUM2INT(k); CHECK_DOMAIN2(ik, 0, 19);
    a = mayan_long_count_to_rd(ibt, ikt, it, iu, ik);
    rd_to_mayan_long_count(a, &ibt2, &ikt2, &it2, &iu2, &ik2);
    if (ibt != ibt2 || ikt != ikt2 || it != it2 || iu != iu2 || ik != ik2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.mayan_tzolkin_differenceObject



415
416
417
418
419
420
421
422
423
424
425
426
427
# File 'ext/calendrical/calendricalmodule.c', line 415

static VALUE
calendrical_mayan_tzolkin_difference
(VALUE obj, VALUE na1, VALUE nu1, VALUE na2, VALUE nu2)
{
    int inu1, ina1, inu2, ina2, d;

    inu1 = NUM2INT(nu1); CHECK_DOMAIN2(inu1, 1, 13);
    ina1 = NUM2INT(na1); CHECK_DOMAIN2(ina1, 1, 20);
    inu2 = NUM2INT(nu2); CHECK_DOMAIN2(inu2, 1, 13);
    ina2 = NUM2INT(na2); CHECK_DOMAIN2(ina2, 1, 20);
    d = mayan_tzolkin_difference(ina1, inu1, ina2, inu2);
    return INT2NUM(d);
}

.mayan_tzolkin_on_or_before(na, nu, a) ⇒ Object



429
430
431
432
433
434
435
436
437
438
439
# File 'ext/calendrical/calendricalmodule.c', line 429

static VALUE
calendrical_mayan_tzolkin_on_or_before(VALUE obj, VALUE na, VALUE nu, VALUE a)
{
    int inu, ina, ia, d;

    inu = NUM2INT(nu); CHECK_DOMAIN2(inu, 1, 13);
    ina = NUM2INT(na); CHECK_DOMAIN2(ina, 1, 20);
    ia = NUM2INT(a);
    d = mayan_tzolkin_on_or_before(ina, inu, ia);
    return INT2NUM(d);
}

.mjd_to_jd(m) ⇒ Object



1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
# File 'ext/calendrical/calendricalmodule.c', line 1095

static VALUE
calendrical_mjd_to_jd(VALUE obj, VALUE m)
{
    int im, j;

    im = NUM2INT(m);
    j = mjd_to_jd(im);
    return INT2NUM(j);

}

.mjd_to_rd(m) ⇒ Object



1075
1076
1077
1078
1079
1080
1081
1082
1083
# File 'ext/calendrical/calendricalmodule.c', line 1075

static VALUE
calendrical_mjd_to_rd(VALUE obj, VALUE m)
{
    int im, a;

    im = NUM2INT(m);
    a = mjd_to_rd(im);
    return INT2NUM(a);
}

.nanakshahi_last_day_of_month(y, m) ⇒ Object



995
996
997
998
999
1000
1001
1002
1003
1004
# File 'ext/calendrical/calendricalmodule.c', line 995

static VALUE
calendrical_nanakshahi_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = nanakshahi_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.nanakshahi_leap_year(y) ⇒ Object



985
986
987
988
989
990
991
992
993
# File 'ext/calendrical/calendricalmodule.c', line 985

static VALUE
calendrical_nanakshahi_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = nanakshahi_leap_year(iy);
    return INT2BOOL(l);
}

.nanakshahi_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


985
986
987
988
989
990
991
992
993
# File 'ext/calendrical/calendricalmodule.c', line 985

static VALUE
calendrical_nanakshahi_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = nanakshahi_leap_year(iy);
    return INT2BOOL(l);
}

.nanakshahi_to_rd(y, m, md) ⇒ Object



1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
# File 'ext/calendrical/calendricalmodule.c', line 1006

static VALUE
calendrical_nanakshahi_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = nanakshahi_to_rd(iy, im, imd);
    rd_to_nanakshahi(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.new_moon(d) ⇒ Object



575
576
577
578
579
580
581
582
# File 'ext/calendrical/calendricalmodule.c', line 575

static VALUE
calendrical_new_moon(VALUE obj, VALUE d)
{
    double n;

    n = new_moon(getfloat(d));
    return rb_float_new(n);
}

.nicaean_rule_easter(y) ⇒ Object



320
321
322
323
324
325
326
327
328
# File 'ext/calendrical/calendricalmodule.c', line 320

static VALUE
calendrical_nicaean_rule_easter(VALUE obj, VALUE y)
{
    int iy, a;

    iy = NUM2INT(y);
    a = nicaean_rule_easter(iy);
    return INT2NUM(a);
}

.nth_kday(y, m, n, k) ⇒ Object



305
306
307
308
309
310
311
312
313
314
315
316
317
318
# File 'ext/calendrical/calendricalmodule.c', line 305

static VALUE
calendrical_nth_kday(VALUE obj, VALUE y, VALUE m, VALUE n, VALUE k)
{
    int iy, im, in, ik, b;

    in = NUM2INT(n);
    if (in < -5 || in == 0 || in > 5)
  rb_raise(rb_eArgError, "out of range");
    ik = NUM2INT(k); CHECK_DOMAIN2(ik, 0, 6);
    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    b = nth_kday(iy, im, in, ik);
    return INT2NUM(b);
}

.old_hindu_lunar_precedesObject



594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
# File 'ext/calendrical/calendricalmodule.c', line 594

static VALUE
calendrical_old_hindu_lunar_precedes
(VALUE obj,
 VALUE y1, VALUE m1, VALUE l1, VALUE md1,
 VALUE y2, VALUE m2, VALUE l2, VALUE md2)
{
    int iy1, im1, il1, imd1, iy2, im2, il2, imd2, d;

    im1 = NUM2INT(m1); CHECK_DOMAIN2(im1, 1, 12);
    il1 = BOOL2INT(l1);
    imd1 = NUM2INT(md1); CHECK_DOMAIN2(imd1, 1, 30);
    iy1 = NUM2INT(y1);
    im2 = NUM2INT(m2); CHECK_DOMAIN2(im2, 1, 12);
    il2 = BOOL2INT(l2);
    imd2 = NUM2INT(md2); CHECK_DOMAIN2(imd2, 1, 30);
    iy2 = NUM2INT(y2);
    d = old_hindu_lunar_precedes(iy1, im1, il1, imd1, iy2, im2, il2, imd2);
    return INT2BOOL(d);
}

.old_hindu_lunar_to_rdObject



614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
# File 'ext/calendrical/calendricalmodule.c', line 614

static VALUE
calendrical_old_hindu_lunar_to_rd
(VALUE obj, VALUE y, VALUE m, VALUE l, VALUE md)
{
    int iy, im, il, imd, a, iy2, im2, il2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    il = BOOL2INT(l);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 30);
    iy = NUM2INT(y);
    a = old_hindu_lunar_to_rd(iy, im, il, imd);
    rd_to_old_hindu_lunar(a, &iy2, &im2, &il2, &imd2);
    if (im != im2 || il != il2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.old_hindu_solar_to_rd(y, m, md) ⇒ Object



542
543
544
545
546
547
548
549
550
551
552
553
554
555
# File 'ext/calendrical/calendricalmodule.c', line 542

static VALUE
calendrical_old_hindu_solar_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = old_hindu_solar_to_rd(iy, im, imd);
    rd_to_old_hindu_solar(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.ordinal_to_rd(y, yd) ⇒ Object



1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
# File 'ext/calendrical/calendricalmodule.c', line 1031

static VALUE
calendrical_ordinal_to_rd(VALUE obj, VALUE y, VALUE yd)
{
    int iy, iyd, a, iy2, iyd2;

    iyd = NUM2INT(yd); CHECK_DOMAIN2(iyd, 1, 366);
    iy = NUM2INT(y);
    a = ordinal_to_rd(iy, iyd);
    rd_to_ordinal(a, &iy2, &iyd2);
    if (iyd != iyd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.rd_to_bahai(a) ⇒ Object



861
862
863
864
865
866
867
868
869
# File 'ext/calendrical/calendricalmodule.c', line 861

static VALUE
calendrical_rd_to_bahai(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_bahai(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_bengali(a) ⇒ Object



975
976
977
978
979
980
981
982
983
# File 'ext/calendrical/calendricalmodule.c', line 975

static VALUE
calendrical_rd_to_bengali(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_bengali(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_coptic(a) ⇒ Object



723
724
725
726
727
728
729
730
731
# File 'ext/calendrical/calendricalmodule.c', line 723

static VALUE
calendrical_rd_to_coptic(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_coptic(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_day_of_week(a) ⇒ Object



1136
1137
1138
1139
1140
1141
1142
1143
1144
# File 'ext/calendrical/calendricalmodule.c', line 1136

static VALUE
calendrical_rd_to_day_of_week(VALUE obj, VALUE a)
{
    int ia, w;

    ia = NUM2INT(a);
    w = rd_to_day_of_week(ia);
    return INT2NUM(w);
}

.rd_to_ethiopian(a) ⇒ Object



769
770
771
772
773
774
775
776
777
# File 'ext/calendrical/calendricalmodule.c', line 769

static VALUE
calendrical_rd_to_ethiopian(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_ethiopian(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_french(a) ⇒ Object



492
493
494
495
496
497
498
499
500
# File 'ext/calendrical/calendricalmodule.c', line 492

static VALUE
calendrical_rd_to_french(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_french(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_gregorian(a) ⇒ Object



71
72
73
74
75
76
77
78
79
# File 'ext/calendrical/calendricalmodule.c', line 71

static VALUE
calendrical_rd_to_gregorian(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_gregorian(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_hebrew(a) ⇒ Object



295
296
297
298
299
300
301
302
303
# File 'ext/calendrical/calendricalmodule.c', line 295

static VALUE
calendrical_rd_to_hebrew(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_hebrew(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_indian_national(a) ⇒ Object



929
930
931
932
933
934
935
936
937
# File 'ext/calendrical/calendricalmodule.c', line 929

static VALUE
calendrical_rd_to_indian_national(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_indian_national(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_islamic(a) ⇒ Object



199
200
201
202
203
204
205
206
207
# File 'ext/calendrical/calendricalmodule.c', line 199

static VALUE
calendrical_rd_to_islamic(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_islamic(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_iso(a) ⇒ Object



107
108
109
110
111
112
113
114
115
# File 'ext/calendrical/calendricalmodule.c', line 107

static VALUE
calendrical_rd_to_iso(VALUE obj, VALUE a)
{
    int ia, y, w, wd;

    ia = NUM2INT(a);
    rd_to_iso(ia, &y, &w, &wd);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(w), INT2NUM(wd));
}

.rd_to_jalali(a) ⇒ Object



815
816
817
818
819
820
821
822
823
# File 'ext/calendrical/calendricalmodule.c', line 815

static VALUE
calendrical_rd_to_jalali(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_jalali(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_jd(a) ⇒ Object



1065
1066
1067
1068
1069
1070
1071
1072
1073
# File 'ext/calendrical/calendricalmodule.c', line 1065

static VALUE
calendrical_rd_to_jd(VALUE obj, VALUE a)
{
    int ia, j;

    ia = NUM2INT(a);
    j = rd_to_jd(ia);
    return INT2NUM(j);
}

.rd_to_julian(a) ⇒ Object



153
154
155
156
157
158
159
160
161
# File 'ext/calendrical/calendricalmodule.c', line 153

static VALUE
calendrical_rd_to_julian(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_julian(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_kyureki(a) ⇒ Object



1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
# File 'ext/calendrical/calendricalmodule.c', line 1169

static VALUE
calendrical_rd_to_kyureki(VALUE obj, VALUE a)
{
    int ia, j;
    QDATE q;

    ia = NUM2INT(a); CHECK_DOMAIN2(ia, 162193, 767009);
    j = rd_to_jd(ia);
    qref(j, &q);
    if (q.j == 0)
  rb_raise(rb_eArgError, "invalid date");
    return rb_ary_new3
  (4, INT2NUM(q.y), INT2NUM(q.m), INT2BOOL(q.leap), INT2NUM(q.md));
}

.rd_to_kyureki_day_of_week(a) ⇒ Object



1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
# File 'ext/calendrical/calendricalmodule.c', line 1184

static VALUE
calendrical_rd_to_kyureki_day_of_week(VALUE obj, VALUE a)
{
    int ia, j;
    QDATE q;

    ia = NUM2INT(a);
    j = rd_to_jd(ia);
    qref(j, &q);
    if (q.j == 0)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(q.wd);
}

.rd_to_ld(a) ⇒ Object



1126
1127
1128
1129
1130
1131
1132
1133
1134
# File 'ext/calendrical/calendricalmodule.c', line 1126

static VALUE
calendrical_rd_to_ld(VALUE obj, VALUE a)
{
    int ia, l;

    ia = NUM2INT(a);
    l = rd_to_ld(ia);
    return INT2NUM(l);
}

.rd_to_mayan_haab(a) ⇒ Object



369
370
371
372
373
374
375
376
377
# File 'ext/calendrical/calendricalmodule.c', line 369

static VALUE
calendrical_rd_to_mayan_haab(VALUE obj, VALUE a)
{
    int ia, md, m;

    ia = NUM2INT(a);
    rd_to_mayan_haab(ia, &m, &md);
    return rb_ary_new3(2, INT2NUM(m), INT2NUM(md));
}

.rd_to_mayan_long_count(a) ⇒ Object



358
359
360
361
362
363
364
365
366
367
# File 'ext/calendrical/calendricalmodule.c', line 358

static VALUE
calendrical_rd_to_mayan_long_count(VALUE obj, VALUE a)
{
    int ia, bt, kt, t, u, k;

    ia = NUM2INT(a);
    rd_to_mayan_long_count(ia, &bt, &kt, &t, &u, &k);
    return rb_ary_new3
  (5, INT2NUM(bt), INT2NUM(kt), INT2NUM(t), INT2NUM(u), INT2NUM(k));
}

.rd_to_mayan_tzolkin(a) ⇒ Object



405
406
407
408
409
410
411
412
413
# File 'ext/calendrical/calendricalmodule.c', line 405

static VALUE
calendrical_rd_to_mayan_tzolkin(VALUE obj, VALUE a)
{
    int ia, nu, na;

    ia = NUM2INT(a);
    rd_to_mayan_tzolkin(ia, &na, &nu);
    return rb_ary_new3(2, INT2NUM(na), INT2NUM(nu));
}

.rd_to_mjd(a) ⇒ Object



1085
1086
1087
1088
1089
1090
1091
1092
1093
# File 'ext/calendrical/calendricalmodule.c', line 1085

static VALUE
calendrical_rd_to_mjd(VALUE obj, VALUE a)
{
    int ia, m;

    ia = NUM2INT(a);
    m = rd_to_mjd(ia);
    return INT2NUM(m);
}

.rd_to_nanakshahi(a) ⇒ Object



1021
1022
1023
1024
1025
1026
1027
1028
1029
# File 'ext/calendrical/calendricalmodule.c', line 1021

static VALUE
calendrical_rd_to_nanakshahi(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_nanakshahi(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_old_hindu_lunar(a) ⇒ Object



584
585
586
587
588
589
590
591
592
# File 'ext/calendrical/calendricalmodule.c', line 584

static VALUE
calendrical_rd_to_old_hindu_lunar(VALUE obj, VALUE a)
{
    int ia, y, m, l, md;

    ia = NUM2INT(a);
    rd_to_old_hindu_lunar(ia, &y, &m, &l, &md);
    return rb_ary_new3(4, INT2NUM(y), INT2NUM(m), INT2BOOL(l), INT2NUM(md));
}

.rd_to_old_hindu_solar(a) ⇒ Object



532
533
534
535
536
537
538
539
540
# File 'ext/calendrical/calendricalmodule.c', line 532

static VALUE
calendrical_rd_to_old_hindu_solar(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_old_hindu_solar(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_ordinal(a) ⇒ Object



1045
1046
1047
1048
1049
1050
1051
1052
1053
# File 'ext/calendrical/calendricalmodule.c', line 1045

static VALUE
calendrical_rd_to_ordinal(VALUE obj, VALUE a)
{
    int ia, y, yd;

    ia = NUM2INT(a);
    rd_to_ordinal(ia, &y, &yd);
    return rb_ary_new3(2, INT2NUM(y), INT2NUM(yd));
}

.rd_to_week_date(a) ⇒ Object



107
108
109
110
111
112
113
114
115
# File 'ext/calendrical/calendricalmodule.c', line 107

static VALUE
calendrical_rd_to_iso(VALUE obj, VALUE a)
{
    int ia, y, w, wd;

    ia = NUM2INT(a);
    rd_to_iso(ia, &y, &w, &wd);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(w), INT2NUM(wd));
}

.rd_to_world(a) ⇒ Object



667
668
669
670
671
672
673
674
675
# File 'ext/calendrical/calendricalmodule.c', line 667

static VALUE
calendrical_rd_to_world(VALUE obj, VALUE a)
{
    int ia, y, m, md;

    ia = NUM2INT(a);
    rd_to_world(ia, &y, &m, &md);
    return rb_ary_new3(3, INT2NUM(y), INT2NUM(m), INT2NUM(md));
}

.rd_to_world_day_of_week(a) ⇒ Object



677
678
679
680
681
682
683
684
685
# File 'ext/calendrical/calendricalmodule.c', line 677

static VALUE
calendrical_rd_to_world_day_of_week(VALUE obj, VALUE a)
{
    int ia, w;

    ia = NUM2INT(a);
    w = rd_to_world_day_of_week(ia);
    return INT2NUM(w);
}

.short_kislev(y) ⇒ Object



270
271
272
273
274
275
276
277
278
# File 'ext/calendrical/calendricalmodule.c', line 270

static VALUE
calendrical_short_kislev(VALUE obj, VALUE y)
{
    int iy, s;

    iy = NUM2INT(y);
    s = short_kislev(iy);
    return INT2BOOL(s);
}

.short_kislev?(y) ⇒ Boolean

Returns:

  • (Boolean)


270
271
272
273
274
275
276
277
278
# File 'ext/calendrical/calendricalmodule.c', line 270

static VALUE
calendrical_short_kislev(VALUE obj, VALUE y)
{
    int iy, s;

    iy = NUM2INT(y);
    s = short_kislev(iy);
    return INT2BOOL(s);
}

.solar_longitude(d) ⇒ Object



514
515
516
517
518
519
520
521
# File 'ext/calendrical/calendricalmodule.c', line 514

static VALUE
calendrical_solar_longitude(VALUE obj, VALUE d)
{
    double l;

    l = solar_longitude(getfloat(d));
    return rb_float_new(l);
}

.week_date_to_rd(y, w, wd) ⇒ Object



92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'ext/calendrical/calendricalmodule.c', line 92

static VALUE
calendrical_iso_to_rd(VALUE obj, VALUE y, VALUE w, VALUE wd)
{
    int iy, iw, iwd, a, iy2, iw2, iwd2;

    iw = NUM2INT(w); CHECK_DOMAIN2(iw, 1, 53);
    iwd = NUM2INT(wd); CHECK_DOMAIN2(iwd, 1, 7);
    iy = NUM2INT(y);
    a = iso_to_rd(iy, iw, iwd);
    rd_to_iso(a, &iy2, &iw2, &iwd2);
    if (iw != iw2 || iwd != iwd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.world_last_day_of_month(y, m) ⇒ Object



641
642
643
644
645
646
647
648
649
650
# File 'ext/calendrical/calendricalmodule.c', line 641

static VALUE
calendrical_world_last_day_of_month(VALUE obj, VALUE y, VALUE m)
{
    int iy, im, md;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    iy = NUM2INT(y);
    md = world_last_day_of_month(iy, im);
    return INT2NUM(md);
}

.world_leap_year(y) ⇒ Object



631
632
633
634
635
636
637
638
639
# File 'ext/calendrical/calendricalmodule.c', line 631

static VALUE
calendrical_world_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = world_leap_year(iy);
    return INT2BOOL(l);
}

.world_leap_year?(y) ⇒ Boolean

Returns:

  • (Boolean)


631
632
633
634
635
636
637
638
639
# File 'ext/calendrical/calendricalmodule.c', line 631

static VALUE
calendrical_world_leap_year(VALUE obj, VALUE y)
{
    int iy, l;

    iy = NUM2INT(y);
    l = world_leap_year(iy);
    return INT2BOOL(l);
}

.world_to_rd(y, m, md) ⇒ Object



652
653
654
655
656
657
658
659
660
661
662
663
664
665
# File 'ext/calendrical/calendricalmodule.c', line 652

static VALUE
calendrical_world_to_rd(VALUE obj, VALUE y, VALUE m, VALUE md)
{
    int iy, im, imd, a, iy2, im2, imd2;

    im = NUM2INT(m); CHECK_DOMAIN2(im, 1, 12);
    imd = NUM2INT(md); CHECK_DOMAIN2(imd, 1, 31);
    iy = NUM2INT(y);
    a = world_to_rd(iy, im, imd);
    rd_to_world(a, &iy2, &im2, &imd2);
    if (im != im2 || imd != imd2 || iy != iy2)
  rb_raise(rb_eArgError, "invalid date");
    return INT2NUM(a);
}

.zodiac(d) ⇒ Object



523
524
525
526
527
528
529
530
# File 'ext/calendrical/calendricalmodule.c', line 523

static VALUE
calendrical_zodiac(VALUE obj, VALUE d)
{
    double l;

    l = zodiac(getfloat(d));
    return rb_float_new(l);
}