international_date_parser 0.2.3 → 0.2.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +3 -3
- data/international_date_parser.gemspec +1 -0
- data/lib/international_date_parser.rb +21 -28
- data/lib/international_date_parser/railtie.rb +2 -0
- data/lib/international_date_parser/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e37a3e7aab1142910ddd5e4ff07b1aef159fe730
|
4
|
+
data.tar.gz: 1a26b5b98d35d841dce3909f5260d9e26d1c13be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5aa3bd7f6cab479fc57fee615e109adf165361aa7db4c82153fd0a6d28caf8fd7356a06642bd92b1e9b1c4f02deca04bc0d5f929fb0e127f023a02f7818b6594
|
7
|
+
data.tar.gz: a280295386eaabf405eb8756226a344f3e0b4c31a48abdfbe255068222c285b14ee721a6471af96c7819c82f9d870209d6d7e332cb4ce4cb110f02e43b8c79e4
|
data/.gitignore
CHANGED
data/README.md
CHANGED
@@ -6,9 +6,9 @@ Extend the date parsing capabilities of Ruby to work with dates which months are
|
|
6
6
|
|
7
7
|
#### Usage:
|
8
8
|
```
|
9
|
-
Date.parse_international("28 de Fevereiro de 2020")
|
10
|
-
|
11
|
-
|
9
|
+
InternationalDateParser::Date.parse_international("28 de Fevereiro de 2020")
|
10
|
+
InternationalDateParser::Date.parse_international("28 abr 2020")
|
11
|
+
|
12
12
|
```
|
13
13
|
|
14
14
|
#### Notes:
|
@@ -10,7 +10,7 @@
|
|
10
10
|
# date_string.to_international_date
|
11
11
|
#
|
12
12
|
# Notes:
|
13
|
-
# 1) This routine works by substituting your local month names (as defined by Date::
|
13
|
+
# 1) This routine works by substituting your local month names (as defined by Date::MONTH_TRANSLATIONS) for the
|
14
14
|
# international names when they occur in the date_string.
|
15
15
|
# 2) As distributed, this code works for French, German, Italian, and Spanish. You must add the month
|
16
16
|
# names for any additional languages you wish to handle.
|
@@ -18,39 +18,32 @@
|
|
18
18
|
|
19
19
|
module InternationalDateParser
|
20
20
|
|
21
|
-
require '
|
21
|
+
require 'date'
|
22
|
+
class Date < Date
|
23
|
+
MONTH_TO_PARSE = {
|
24
|
+
fr: %w(janvier février mars avril mai juin juillet août septembre octobre novembre décembre), # French
|
25
|
+
ge: %w(Januar Februar März April Mai Juni Juli August September Oktober November Dezember), # German
|
26
|
+
it: %w(gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre novembre dicembre), # Italian
|
27
|
+
es: %w(enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre), # Spanish
|
28
|
+
pt: %w(janeiro fevereiro março abril maio junho julho agosto setembro outubro novembro dezembro), # Portuguese
|
29
|
+
}
|
30
|
+
MONTH_TRANSLATIONS = MONTH_TO_PARSE.values.flatten
|
31
|
+
MONTH_TRANSLATIONS_SHORT = MONTH_TRANSLATIONS.map{|m| m[0,3]}
|
22
32
|
|
23
|
-
class Date
|
24
33
|
def self.parse_international(date)
|
25
|
-
parse(date_to_english(date))
|
34
|
+
Date.parse(date_to_english(date))
|
26
35
|
end
|
27
36
|
|
28
|
-
MONTH_TRANSLATIONS = []
|
29
|
-
MONTH_TRANSLATIONS += %w(janvier février mars avril mai juin juillet août septembre octobre novembre décembre) # French
|
30
|
-
MONTH_TRANSLATIONS += %w(Januar Februar März April Mai Juni Juli August September Oktober November Dezember) # German
|
31
|
-
MONTH_TRANSLATIONS += %w(gennaio febbraio marzo aprile maggio giugno luglio agosto settembre ottobre novembre dicembre) # Italian
|
32
|
-
MONTH_TRANSLATIONS += %w(enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre) # Spanish
|
33
|
-
MONTH_TRANSLATIONS += %w(janeiro fevereiro março abril maio junho julho agosto setembro outubro novembro dezembro) # Portuguese
|
34
|
-
|
35
|
-
MONTH_TRANSLATIONS_SHORT = MONTH_TRANSLATIONS.map{|m| m[0,3]}
|
36
|
-
|
37
37
|
def self.date_to_english(date)
|
38
|
-
month_from = date[/[^\s\d,]{3,}/i] # Search for a month name
|
39
|
-
|
40
|
-
date.
|
38
|
+
month_from = date[/[^\s\d,]{3,}/i].downcase # Search for a month name
|
39
|
+
month_index = MONTH_TRANSLATIONS.index(month_from) || MONTH_TRANSLATIONS_SHORT.index(month_from)
|
40
|
+
date.scan(/\s[^\s\d,]{1,2}\s/).each{|s| date.sub!(s[/[^\s]+/],'') if s}
|
41
|
+
date.downcase!
|
42
|
+
date.sub!(month_from, Date::MONTHNAMES[month_index % 12 + 1]) if month_index
|
43
|
+
date
|
41
44
|
end
|
42
45
|
end
|
43
46
|
|
44
|
-
|
45
|
-
def self.parse_international(string)
|
46
|
-
parse Date.date_to_english(string)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
class String
|
51
|
-
def to_international_date
|
52
|
-
Date::parse_international(self).to_date
|
53
|
-
end
|
54
|
-
end
|
47
|
+
end
|
55
48
|
|
56
|
-
|
49
|
+
require 'international_date_parser/railtie' if defined?(Rails)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: international_date_parser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Humberto
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: byebug
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '8.2'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '8.2'
|
41
55
|
description: Ruby class Date extension to translate months and then parse the string
|
42
56
|
email:
|
43
57
|
- hlsp999@gmail.com
|