nepdate 1.0.0.rc.1

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/sig/nepdate.rbs ADDED
@@ -0,0 +1,435 @@
1
+ module NepDate
2
+ VERSION: String
3
+
4
+ module ErrorKind
5
+ OUT_OF_RANGE: Symbol
6
+ INVALID_MONTH: Symbol
7
+ INVALID_DAY: Symbol
8
+ INVALID_GREGORIAN: Symbol
9
+ INVALID_CHARACTER: Symbol
10
+ WRONG_GROUP_COUNT: Symbol
11
+ NUMBER_TOO_LONG: Symbol
12
+ AMBIGUOUS: Symbol
13
+ UNRECOGNIZED: Symbol
14
+ ALL: Array[Symbol]
15
+
16
+ def self.name_for: (Symbol) -> String
17
+ end
18
+
19
+ class Error < StandardError
20
+ attr_reader kind: Symbol
21
+
22
+ def initialize: (Symbol, String) -> void
23
+ def kind_name: () -> String
24
+ end
25
+
26
+ class OutOfRangeError < Error
27
+ def initialize: (String) -> void
28
+ end
29
+
30
+ class InvalidMonthError < Error
31
+ def initialize: (String) -> void
32
+ end
33
+
34
+ class InvalidDayError < Error
35
+ def initialize: (String) -> void
36
+ end
37
+
38
+ class InvalidGregorianError < Error
39
+ def initialize: (String) -> void
40
+ end
41
+
42
+ class ParseError < Error
43
+ def initialize: (Symbol, String) -> void
44
+ end
45
+
46
+ module Lang
47
+ EN: Symbol
48
+ NE: Symbol
49
+
50
+ def self.coerce: (Symbol | String) -> Symbol
51
+ end
52
+
53
+ module MonthOverflow
54
+ CLAMP: Symbol
55
+ SPILL: Symbol
56
+ ALL: Array[Symbol]
57
+
58
+ def self.coerce: (Symbol | String) -> Symbol
59
+ end
60
+
61
+ module DateOrder
62
+ ORDER: Hash[Symbol, Array[Symbol]]
63
+ ALL: Array[Symbol]
64
+
65
+ def self.coerce: (Symbol | String) -> Symbol
66
+ def self.fields: (Symbol | String) -> Array[Symbol]
67
+ end
68
+
69
+ module Separator
70
+ CHARACTERS: Hash[Symbol, String]
71
+ ALL: Array[Symbol]
72
+ BY_CHARACTER: Hash[String, Symbol]
73
+
74
+ def self.coerce: (Symbol | String) -> Symbol
75
+ def self.character: (Symbol | String) -> String
76
+ def self.name_for: (String) -> Symbol
77
+ end
78
+
79
+ module Names
80
+ MONTH_EN: Array[String]
81
+ MONTH_NE: Array[String]
82
+ MONTH_SHORT_EN: Array[String]
83
+ WEEKDAY_EN: Array[String]
84
+ WEEKDAY_NE: Array[String]
85
+ WEEKDAY_SHORT_EN: Array[String]
86
+ WEEKDAY_SHORT_NE: Array[String]
87
+ DEVANAGARI_DIGITS: Array[String]
88
+ ASCII_DIGITS: Array[String]
89
+
90
+ def self.month_name: (Integer, Symbol) -> String
91
+ def self.month_short: (Integer, Symbol) -> String
92
+ def self.weekday_name: (Integer, Symbol) -> String
93
+ def self.weekday_short: (Integer, Symbol) -> String
94
+ def self.nepali_digits: (String) -> String
95
+ def self.digits: (Integer, Symbol, ?width: Integer) -> String
96
+ end
97
+
98
+ class Month
99
+ include Comparable
100
+
101
+ NAMES_EN: Array[String]
102
+ NAMES_NE: Array[String]
103
+ SHORT_EN: Array[String]
104
+ BAISHAKH: Month
105
+ JESTHA: Month
106
+ ASHAD: Month
107
+ SHRAWAN: Month
108
+ BHADRA: Month
109
+ ASHOJ: Month
110
+ KARTIK: Month
111
+ MANGSIR: Month
112
+ POUSH: Month
113
+ MAGH: Month
114
+ FALGUN: Month
115
+ CHAITRA: Month
116
+ ALL: Array[Month]
117
+
118
+ attr_reader number: Integer
119
+
120
+ def initialize: (Integer) -> void
121
+ def self.from: (Month | Integer) -> Month
122
+ def label: (?lang: Symbol | String) -> String
123
+ def short_label: (?lang: Symbol | String) -> String
124
+ def to_i: () -> Integer
125
+ def to_s: () -> String
126
+ def <=>: (untyped) -> Integer?
127
+ def ==: (untyped) -> bool
128
+ def eql?: (untyped) -> bool
129
+ def hash: () -> Integer
130
+ def inspect: () -> String
131
+ end
132
+
133
+ class Weekday
134
+ include Comparable
135
+
136
+ SUNDAY: Weekday
137
+ MONDAY: Weekday
138
+ TUESDAY: Weekday
139
+ WEDNESDAY: Weekday
140
+ THURSDAY: Weekday
141
+ FRIDAY: Weekday
142
+ SATURDAY: Weekday
143
+ ALL: Array[Weekday]
144
+
145
+ attr_reader number: Integer
146
+
147
+ def initialize: (Integer) -> void
148
+ def self.from: (Weekday | Integer) -> Weekday
149
+ def label: (?lang: Symbol | String) -> String
150
+ def short_label: (?lang: Symbol | String) -> String
151
+ def sunday?: () -> bool
152
+ def monday?: () -> bool
153
+ def tuesday?: () -> bool
154
+ def wednesday?: () -> bool
155
+ def thursday?: () -> bool
156
+ def friday?: () -> bool
157
+ def saturday?: () -> bool
158
+ def to_i: () -> Integer
159
+ def to_s: () -> String
160
+ def <=>: (untyped) -> Integer?
161
+ def ==: (untyped) -> bool
162
+ def eql?: (untyped) -> bool
163
+ def hash: () -> Integer
164
+ def inspect: () -> String
165
+ end
166
+
167
+ class Quarter
168
+ include Comparable
169
+
170
+ NAMES: Hash[Integer, Symbol]
171
+ LABELS: Hash[Integer, String]
172
+ Q1: Quarter
173
+ Q2: Quarter
174
+ Q3: Quarter
175
+ Q4: Quarter
176
+ ALL: Array[Quarter]
177
+
178
+ attr_reader number: Integer
179
+
180
+ def initialize: (Integer) -> void
181
+ def self.from: (Quarter | Integer | Symbol | String) -> Quarter
182
+ def name: () -> Symbol
183
+ def label: () -> String
184
+ def to_i: () -> Integer
185
+ def to_s: () -> String
186
+ def <=>: (untyped) -> Integer?
187
+ def ==: (untyped) -> bool
188
+ def eql?: (untyped) -> bool
189
+ def hash: () -> Integer
190
+ def inspect: () -> String
191
+ end
192
+
193
+ class DateDiff
194
+ attr_reader years: Integer
195
+ attr_reader months: Integer
196
+ attr_reader days: Integer
197
+ attr_reader total_days: Integer
198
+
199
+ def initialize: (negative: bool, years: Integer, months: Integer, days: Integer, total_days: Integer) -> void
200
+ def negative?: () -> bool
201
+ def sign: () -> Integer
202
+ def to_h: () -> Hash[Symbol, Integer | bool]
203
+ def ==: (untyped) -> bool
204
+ def eql?: (untyped) -> bool
205
+ def hash: () -> Integer
206
+ def inspect: () -> String
207
+ end
208
+
209
+ class Date
210
+ include Comparable
211
+
212
+ DEFAULT_OFFSET: Integer
213
+ DEFAULT_ZONE: String
214
+ OFFSET_ALIASES: Hash[String, Integer]
215
+ MIN: Date
216
+ MAX: Date
217
+
218
+ attr_reader year: Integer
219
+ attr_reader month: Integer
220
+ attr_reader day: Integer
221
+ attr_reader serial: Integer
222
+
223
+ def initialize: (Integer, Integer, Integer) -> void
224
+
225
+ def self.from_bs: (Integer, Integer, Integer) -> Date
226
+ def self.from_ymd_parts: (Integer, Integer, Integer) -> Date
227
+ def self.from_gregorian: (Integer, Integer, Integer) -> Date
228
+ def self.from_date: (::Date) -> Date
229
+ def self.from_time: (::Time) -> Date
230
+ def self.min: () -> Date
231
+ def self.max: () -> Date
232
+ def self.today: (?zone: untyped, ?clock: untyped) -> Date
233
+ def self.parse: (String) -> Date
234
+ def self.try_parse: (String) -> Date?
235
+ def self.parse_lenient: (String) -> Date
236
+ def self.try_parse_lenient: (String) -> Date?
237
+ def self.from_ymd: (Integer) -> Date
238
+ def self.from_ymd_int: (Integer) -> Date
239
+ def self.from_json: (String) -> Date
240
+ def self.from_gregorian_batch: (Enumerable[untyped]) -> Array[Date]
241
+ def self.parse_batch: (Enumerable[String]) -> Array[::Date]
242
+ def self.to_gregorian_batch: (Enumerable[Date]) -> Array[::Date]
243
+ def self.min_gregorian: () -> ::Date
244
+ def self.max_gregorian: () -> ::Date
245
+ def self.offset_seconds: (untyped) -> Integer
246
+ def self.from_serial: (Integer) -> Date
247
+ def self.integer_argument: (untyped, String) -> Integer
248
+
249
+ def day_of_year: () -> Integer
250
+ def year_length: () -> Integer
251
+ def month_length: () -> Integer
252
+ def month_end_day: () -> Integer
253
+ def month_enum: () -> Month
254
+ def month_name: () -> Month
255
+ def weekday: () -> Weekday
256
+ def day_of_week: () -> Weekday
257
+ def last_day_of_month: () -> Date
258
+ def month_end_date: () -> Date
259
+ def to_date: () -> ::Date
260
+ def english_date: () -> ::Date
261
+ def to_datetime: (?zone: untyped) -> ::DateTime
262
+ def to_time: (?zone: untyped, ?hour: Integer, ?minute: Integer, ?second: Integer) -> ::Time
263
+ def today?: (?zone: untyped, ?clock: untyped) -> bool
264
+ def is_today: (?zone: untyped, ?clock: untyped) -> bool
265
+ def yesterday?: (?zone: untyped, ?clock: untyped) -> bool
266
+ def is_yesterday: (?zone: untyped, ?clock: untyped) -> bool
267
+ def tomorrow?: (?zone: untyped, ?clock: untyped) -> bool
268
+ def is_tomorrow: (?zone: untyped, ?clock: untyped) -> bool
269
+ def fiscal_year: () -> FiscalYear
270
+ def quarter: () -> Quarter
271
+ def add_days: (Integer) -> Date
272
+ def add_months: (Integer, ?overflow: Symbol | String) -> Date
273
+ def add_years: (Integer, ?overflow: Symbol | String) -> Date
274
+ def days_until: (Date) -> Integer
275
+ def diff: (Date) -> DateDiff
276
+ def calendar_breakdown: (Date) -> DateDiff
277
+ def succ: () -> Date
278
+ def +: (Integer) -> Date
279
+ def -: (Integer) -> Date
280
+ | (Date) -> Integer
281
+ def <=>: (untyped) -> Integer?
282
+ def compare_to: (Date) -> Integer?
283
+ def ==: (untyped) -> bool
284
+ def eql?: (untyped) -> bool
285
+ def hash: () -> Integer
286
+ def to_ymd: () -> Integer
287
+ def ymd: () -> Integer
288
+ def iso8601: () -> String
289
+ def isoformat: () -> String
290
+ def to_s: () -> String
291
+ def to_short_string: (?order: Symbol | String, ?separator: Symbol | String, ?pad: bool, ?lang: Symbol | String) -> String
292
+ def to_long_string: (?weekday: bool, ?year: bool, ?pad: bool, ?lang: Symbol | String) -> String
293
+ def to_unicode_string: (?order: Symbol | String, ?separator: Symbol | String, ?pad: bool) -> String
294
+ def to_long_unicode_string: (?weekday: bool, ?year: bool, ?pad: bool) -> String
295
+ def format: (String, ?lang: Symbol | String) -> String
296
+ def to_json: (*untyped) -> String
297
+ def to_h: () -> Hash[Symbol, Integer]
298
+ def to_a: () -> Array[Integer]
299
+ def to_ary: () -> Array[Integer]
300
+ def deconstruct: () -> Array[Integer]
301
+ def deconstruct_keys: (untyped) -> Hash[Symbol, Integer]
302
+ def inspect: () -> String
303
+ end
304
+
305
+ class DateRange
306
+ include Enumerable[Date]
307
+
308
+ attr_reader start: Date
309
+ attr_reader end: Date
310
+
311
+ def initialize: (Date, Date) -> void
312
+ def self.of: (Date, Date) -> DateRange
313
+ def self.single_day: (Date) -> DateRange
314
+ def self.from_day_count: (Date, Integer) -> DateRange
315
+ def self.for_month: (Integer, Integer) -> DateRange
316
+ def self.for_year: (Integer) -> DateRange
317
+ def self.current_month: (?zone: untyped, ?clock: untyped) -> DateRange
318
+ def self.current_fiscal_year: (?zone: untyped, ?clock: untyped) -> DateRange
319
+ def self.current_calendar_year: (?zone: untyped, ?clock: untyped) -> DateRange
320
+
321
+ def length: () -> Integer
322
+ def size: () -> Integer
323
+ def first: () -> Date
324
+ | (Integer) -> Array[Date]
325
+ def last: () -> Date
326
+ | (Integer) -> Array[Date]
327
+ def empty?: () -> bool
328
+ def include?: (Date) -> bool
329
+ def contains?: (Date) -> bool
330
+ def contains: (Date) -> bool
331
+ def contains_range?: (DateRange) -> bool
332
+ def contains_range: (DateRange) -> bool
333
+ def overlaps?: (DateRange) -> bool
334
+ def overlaps: (DateRange) -> bool
335
+ def adjacent_to?: (DateRange) -> bool
336
+ def is_adjacent_to: (DateRange) -> bool
337
+ def intersect: (DateRange) -> DateRange?
338
+ def union: (DateRange) -> DateRange
339
+ def except: (DateRange) -> Array[DateRange]
340
+ def split_by_month: () -> Array[DateRange]
341
+ def split_by_fiscal_quarter: () -> Array[DateRange]
342
+ def dates_with_interval: (?Integer) -> Array[Date]
343
+ def working_days: (?exclude_sunday: bool) -> Array[Date]
344
+ def weekend_days: (?include_sunday: bool) -> Array[Date]
345
+ def each: () { (Date) -> void } -> self
346
+ | () -> Enumerator[Date, self]
347
+ def ==: (untyped) -> bool
348
+ def eql?: (untyped) -> bool
349
+ def hash: () -> Integer
350
+ def to_s: () -> String
351
+ def to_short_string: (?order: Symbol | String, ?separator: Symbol | String, ?lang: Symbol | String) -> String
352
+ def to_h: () -> Hash[Symbol, Date]
353
+ def inspect: () -> String
354
+ end
355
+
356
+ class FiscalYear
357
+ include Comparable
358
+
359
+ attr_reader start_year: Integer
360
+
361
+ def initialize: (Integer) -> void
362
+ def self.from: (FiscalYear | Integer) -> FiscalYear
363
+ def self.containing: (Date) -> FiscalYear
364
+ def start: () -> Date
365
+ def end: () -> Date
366
+ def range: () -> DateRange
367
+ def quarter_range: (Quarter | Integer | Symbol | String) -> DateRange
368
+ def quarter_start: (Quarter | Integer | Symbol | String) -> Date
369
+ def quarter_end: (Quarter | Integer | Symbol | String) -> Date
370
+ def label: (?lang: Symbol | String) -> String
371
+ def succ: () -> FiscalYear
372
+ def <=>: (untyped) -> Integer?
373
+ def ==: (untyped) -> bool
374
+ def eql?: (untyped) -> bool
375
+ def hash: () -> Integer
376
+ def to_s: () -> String
377
+ def inspect: () -> String
378
+ end
379
+
380
+ module Calendar
381
+ GREGORIAN_MONTH_LENGTHS: Array[Integer]
382
+
383
+ def self.month_length: (Integer, Integer) -> Integer
384
+ def self.to_serial: (Integer, Integer, Integer) -> Integer
385
+ def self.from_serial: (Integer) -> [Integer, Integer, Integer]
386
+ def self.validate: (Integer, Integer, Integer) -> true
387
+ def self.days_from_civil: (Integer, Integer, Integer) -> Integer
388
+ def self.civil_from_days: (Integer) -> [Integer, Integer, Integer]
389
+ def self.gregorian_month_length: (Integer, Integer) -> Integer
390
+ def self.gregorian_leap_year?: (Integer) -> bool
391
+ def self.valid_gregorian?: (Integer, Integer, Integer) -> bool
392
+ end
393
+
394
+ module Parse
395
+ GROUP_COUNT: Integer
396
+ MAX_DIGITS: Integer
397
+ ASCII_SEPARATORS: Array[String]
398
+ DANDA: String
399
+
400
+ def self.strict: (String) -> [Integer, Integer, Integer]
401
+ def self.invalid_character: (String, Integer) -> bot
402
+ end
403
+
404
+ module Lenient
405
+ SEPARATORS: Array[String]
406
+ MAX_DIGITS: Integer
407
+ KELVIN: String
408
+ DEVA_DIGITS: Hash[String, String]
409
+ ERA_MARKERS: Array[String]
410
+ IGNORED_WORDS: Array[String]
411
+ MONTH_WORDS: Hash[String, Integer]
412
+
413
+ def self.parse: (String) -> [Integer, Integer, Integer]
414
+ def self.tokens: (String) -> [Array[Integer], Array[Integer], Array[Integer], bool]
415
+ def self.numeric?: (String) -> bool
416
+ def self.word_value: (String) -> Integer
417
+ def self.fold: (String) -> String
418
+ def self.month_form: (Integer, Array[Integer], Array[Integer]) -> [Integer, Integer, Integer]
419
+ def self.numeric_form: (Array[Integer], Array[Integer]) -> [Integer, Integer, Integer]
420
+ end
421
+
422
+ module Format
423
+ DEFAULT_PATTERNS: Array[String]
424
+
425
+ def self.default: (Integer, Integer, Integer, Symbol) -> String
426
+ def self.iso8601: (Integer, Integer, Integer, Symbol) -> String
427
+ def self.short: (Integer, Integer, Integer, order: Symbol | String, separator: Symbol | String, pad: bool, lang: Symbol | String) -> String
428
+ def self.long: (Integer, Integer, Integer, weekday_number: Integer?, include_year: bool, pad: bool, lang: Symbol | String) -> String
429
+ def self.pattern: (String, year: Integer, month: Integer, day: Integer, lang: Symbol | String) -> String
430
+ def self.run_end: (Array[String], Integer, String) -> Integer
431
+ end
432
+
433
+ def self.parse: (String) -> Date
434
+ def self.today: (?zone: untyped, ?clock: untyped) -> Date
435
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nepdate
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0.rc.1
5
+ platform: ruby
6
+ authors:
7
+ - Sanam Pakuwal
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: |
13
+ A pure Ruby port of the C# NepDate library. Converts between Bikram Sambat and Gregorian
14
+ dates, adds days, months and years with an explicit overflow mode, formats in English and
15
+ Nepali, parses strictly and leniently, and works with inclusive date ranges and fiscal years.
16
+ No runtime dependencies and no runtime data file.
17
+ email:
18
+ - 31341013+sanamhub@users.noreply.github.com
19
+ executables: []
20
+ extensions: []
21
+ extra_rdoc_files: []
22
+ files:
23
+ - CHANGELOG.md
24
+ - LICENSE
25
+ - NOTICE
26
+ - README.md
27
+ - lib/nepdate.rb
28
+ - lib/nepdate/calendar.rb
29
+ - lib/nepdate/calendar_table.rb
30
+ - lib/nepdate/date.rb
31
+ - lib/nepdate/date_diff.rb
32
+ - lib/nepdate/date_range.rb
33
+ - lib/nepdate/errors.rb
34
+ - lib/nepdate/fiscal_year.rb
35
+ - lib/nepdate/format.rb
36
+ - lib/nepdate/format_options.rb
37
+ - lib/nepdate/lang.rb
38
+ - lib/nepdate/lenient.rb
39
+ - lib/nepdate/month.rb
40
+ - lib/nepdate/month_overflow.rb
41
+ - lib/nepdate/names.rb
42
+ - lib/nepdate/parse.rb
43
+ - lib/nepdate/quarter.rb
44
+ - lib/nepdate/version.rb
45
+ - lib/nepdate/weekday.rb
46
+ - sig/nepdate.rbs
47
+ homepage: https://nepdate.com
48
+ licenses:
49
+ - MIT
50
+ metadata:
51
+ bug_tracker_uri: https://github.com/sanamhub/nepdate-ruby/issues
52
+ changelog_uri: https://github.com/sanamhub/nepdate-ruby/blob/main/CHANGELOG.md
53
+ documentation_uri: https://github.com/sanamhub/nepdate-ruby/blob/main/docs/API.md
54
+ homepage_uri: https://nepdate.com
55
+ rubygems_mfa_required: 'true'
56
+ source_code_uri: https://github.com/sanamhub/nepdate-ruby
57
+ rdoc_options: []
58
+ require_paths:
59
+ - lib
60
+ required_ruby_version: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '3.4'
65
+ required_rubygems_version: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ requirements: []
71
+ rubygems_version: 3.6.9
72
+ specification_version: 4
73
+ summary: 'Bikram Sambat dates for Ruby: conversion, arithmetic, formatting, parsing
74
+ and ranges'
75
+ test_files: []