dates_from_string 0.3.0 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: da0b2c69885a98e6fa2090b2018496824c5a4c27
4
- data.tar.gz: a6f75c319c6bc2da985caad65fcf89d90d502aea
3
+ metadata.gz: a3a11b4fa95109a8912aeafc2f26059329ab202a
4
+ data.tar.gz: 82965858f5db7e757f59c052d9efdaa602b38bcf
5
5
  SHA512:
6
- metadata.gz: 9fab468e5387281f86f93f84edbea73b811a0231be5a729fc2c2924d299a5aa6ffd0167869e116e5398a65c227665940369078b32bb7a9f2d18591c282c341ed
7
- data.tar.gz: 22781571803da4d2823c555e42e54441bce8a1c90eb2b49a13c652467484cdf3ebf80522ff728be2aeed676758c11556fb4886d74dffd908e1062e10ec537eb7
6
+ metadata.gz: 5c6150df8d07c0f8fae1e3c88a9dd2ff1bafeee14c777b865cf81c4263860cbe9014bc0420d5c3d79e3bf0c8abe249effae70febda78c872207d8389bb71d8d8
7
+ data.tar.gz: 5c22bb5e72c83bb798e5f585c1b17b1971c131c98889fb4c56aec5448f9c117d9ba00bb35500ea615746dd469bc71abbe5b8ef85b7003c19e5eb98ad536c7ad0
data/README.md CHANGED
@@ -1,8 +1,7 @@
1
1
  # DatesFromString
2
2
 
3
- Welcome to your new gem! In this directory, you'll find the files you need to be able to package up your Ruby library into a gem. Put your Ruby code in the file `lib/dates_from_string`. To experiment with that code, run `bin/console` for an interactive prompt.
3
+ Flexible solution for finding dates in text. After parsing text gem return flexible structure of dates, also you can get array of dates.
4
4
 
5
- TODO: Delete this and the text above, and describe your gem
6
5
 
7
6
  ## Installation
8
7
 
@@ -22,7 +21,74 @@ Or install it yourself as:
22
21
 
23
22
  ## Usage
24
23
 
25
- TODO: Write usage instructions here
24
+
25
+ ```ruby
26
+ text = "1988-1990 and 2000 and one more date 28.04.2015" # parsing text
27
+ key_words = ['between','-'] # you can define special separator
28
+ dates_from_string = DatesFromString.new(key_words) # define DatesFromString object
29
+ dates_from_string.get_structure(text) # parsing text
30
+
31
+ #=> returns
32
+ # [{:type=>:year, :value=>"1988", :distance=>0, :key_words=>["-"]},
33
+ # {:type=>:year, :value=>"1990", :distance=>2, :key_words=>[]},
34
+ # {:type=>:year, :value=>"2000", :distance=>5, :key_words=>[]},
35
+ # {:type=>:year, :value=>"2015", :distance=>0, :key_words=>[]},
36
+ # {:type=>:month, :value=>"04", :distance=>0, :key_words=>[]},
37
+ # {:type=>:day, :value=>"28", :distance=>0, :key_words=>[]}]
38
+
39
+ :type # type of date year, month or day
40
+ :value # value of date
41
+ :distance # distance for next date type
42
+ :key_words # special words, symbols that separate dates
43
+ ```
44
+
45
+ Examples:
46
+
47
+ ```ruby
48
+ input = '1988 between 1990'
49
+ key_words = ['between']
50
+ dates_from_string = DatesFromString.new(key_words)
51
+ dates_from_string.get_structure(input)
52
+
53
+ #=> return
54
+ # [{:type=>:year, :value=>"1988", :distance=>2, :key_words=>["between"]},
55
+ # {:type=>:year, :value=>"1990", :distance=>0, :key_words=>[]}]
56
+
57
+ input = '2013/07/09 one date and he born in 1990'
58
+ dates_from_string.get_structure(input)
59
+
60
+ #=> return
61
+ # [{:type=>:year, :value=>"2013", :distance=>0, :key_words=>[]},
62
+ # {:type=>:month, :value=>"07", :distance=>0, :key_words=>[]},
63
+ # {:type=>:day, :value=>"09", :distance=>7, :key_words=>[]},
64
+ # {:type=>:year, :value=>"1990", :distance=>0, :key_words=>[]}]
65
+
66
+ input = '1990 1988 year 2013 bla bla bla 2015 a b c d i f g qwe 2016'
67
+ dates_from_string.get_structure(input)
68
+
69
+ #=> return
70
+ # [{:type=>:year, :value=>"1990", :distance=>1, :key_words=>[]},
71
+ # {:type=>:year, :value=>"1988", :distance=>2, :key_words=>[]},
72
+ # {:type=>:year, :value=>"2013", :distance=>4, :key_words=>[]},
73
+ # {:type=>:year, :value=>"2015", :distance=>9, :key_words=>[]},
74
+ # {:type=>:year, :value=>"2016", :distance=>0, :key_words=>[]}]
75
+
76
+ input = 'August 1961'
77
+ dates_from_string.get_structure(input)
78
+
79
+ #=> return
80
+ # [{:type=>:month, :value=>"08", :distance=>1, :key_words=>[]},
81
+ # {:type=>:year, :value=>"1961", :distance=>0, :key_words=>[]}]
82
+
83
+ input = '10 April 1948'
84
+ dates_from_string.get_structure(input)
85
+
86
+ #=> return
87
+ # [{:type=>:day, :value=>"10", :distance=>1, :key_words=>[]},
88
+ # {:type=>:month, :value=>"04", :distance=>1, :key_words=>[]},
89
+ # {:type=>:year, :value=>"1948", :distance=>0, :key_words=>[]}]
90
+ #
91
+ ```
26
92
 
27
93
  ## Development
28
94
 
@@ -21,6 +21,9 @@ class DatesFromString
21
21
  value_full_date = get_full_date(data)
22
22
  value_dash = get_dash_data(data)
23
23
  value_month = get_month_by_list(data)
24
+ value_short_month = get_short_month(data)
25
+
26
+ value_day = get_day(data)
24
27
  next_index = index + 1
25
28
 
26
29
  if value_year
@@ -41,6 +44,14 @@ class DatesFromString
41
44
  if value_month
42
45
  add_to_structure(:month ,value_month, index, next_index, data_arr)
43
46
  end
47
+
48
+ if value_short_month
49
+ add_to_structure(:month ,value_short_month, index, next_index, data_arr)
50
+ end
51
+
52
+ if value_day
53
+ add_to_structure(:day ,value_day, index, next_index, data_arr)
54
+ end
44
55
  end
45
56
 
46
57
  return @main_arr
@@ -67,11 +78,22 @@ class DatesFromString
67
78
  string.split("/")
68
79
  elsif string =~ (/\d{2}\/\d{2}\/\d{4}/)
69
80
  string.split("/").reverse
81
+ # elsif string =~(/\d{2}\s{1}(Jan|Feb|Mar|Apr|May|Jun|Jul|Apr|Sep|Oct|Nov|Dec)\s{1}\d{4}/)
82
+ # string.to_date.to_s.split("-")
83
+ else
84
+ nil
85
+ end
86
+ end
87
+
88
+ def get_day(string)
89
+ if string =~ (/^\d{2}$/)
90
+ string
70
91
  else
71
92
  nil
72
93
  end
73
94
  end
74
95
 
96
+
75
97
  def get_dash_data(string)
76
98
  if string =~ (/\d{4}-\d{4}/)
77
99
  string.split("-")
@@ -83,11 +105,24 @@ class DatesFromString
83
105
  def get_month_by_list(string)
84
106
  month = ['January','February','March','April','May','June','July','August','September','October','November','December']
85
107
  index = month.index(string)
108
+
86
109
  if index
87
110
  sprintf('%02d',(index+1))
88
111
  else
89
112
  nil
90
113
  end
114
+
115
+ end
116
+
117
+ def get_short_month(string)
118
+ short_month = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Apr','Sep','Oct','Nov','Dec']
119
+ short_index = short_month.index(string)
120
+
121
+ if short_index
122
+ sprintf('%02d',(short_index+1))
123
+ else
124
+ nil
125
+ end
91
126
  end
92
127
 
93
128
  def add_to_structure (type ,value, index, next_index, data_arr, key_word = nil)
@@ -1,3 +1,3 @@
1
1
  class DatesFromString
2
- VERSION = "0.3.0"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,55 +1,55 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dates_from_string
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergey Chechaev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-04-28 00:00:00.000000000 Z
11
+ date: 2015-04-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.9'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ~>
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.9'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
33
  version: '10.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ~>
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '10.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: pry-rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  description: Find dates in string and return array of dates
@@ -59,9 +59,9 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - .gitignore
63
- - .rspec
64
- - .travis.yml
62
+ - ".gitignore"
63
+ - ".rspec"
64
+ - ".travis.yml"
65
65
  - CODE_OF_CONDUCT.md
66
66
  - Gemfile
67
67
  - LICENSE.txt
@@ -82,17 +82,17 @@ require_paths:
82
82
  - lib
83
83
  required_ruby_version: !ruby/object:Gem::Requirement
84
84
  requirements:
85
- - - '>='
85
+ - - ">="
86
86
  - !ruby/object:Gem::Version
87
87
  version: '0'
88
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  requirements:
90
- - - '>='
90
+ - - ">="
91
91
  - !ruby/object:Gem::Version
92
92
  version: '0'
93
93
  requirements: []
94
94
  rubyforge_project:
95
- rubygems_version: 2.0.14
95
+ rubygems_version: 2.4.6
96
96
  signing_key:
97
97
  specification_version: 4
98
98
  summary: Flexible solution for finding all formats of dates in text