Module: Vaultify::EdtfHelper
- Included in:
- VaultifyController
- Defined in:
- app/helpers/vaultify/edtf_helper.rb
Instance Method Summary collapse
- #add_separators(str) ⇒ Object
- #add_zeroes(str) ⇒ Object
- #arrange(str) ⇒ Object
- #clean_extra_words(str) ⇒ Object
- #clean_words(str) ⇒ Object
- #convert_date(input) ⇒ Object
- #d2 ⇒ Object
- #d4 ⇒ Object
- #descriptors ⇒ Object
- #dirty(str) ⇒ Object
- #machine_clean(str) ⇒ Object
- #months ⇒ Object
- #rearrange(str) ⇒ Object
- #scrub(str) ⇒ Object
- #seasons ⇒ Object
Instance Method Details
#add_separators(str) ⇒ Object
44 45 46 47 48 49 50 51 52 53 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 44 def add_separators str str.gsub(/([\dX?~])\s+([\dX?~])/, '\\1-\\2') .gsub(' ', '').gsub(/([\dX?~])\/([\dX?~])/, '\\1-\\2') .gsub(Regexp.new('(' + d2 + '-' + d4 + ')-(' + d2 + '-' + d4 + ')'), '\\1/\\2') .gsub(Regexp.new('(' + d2 + '-' + d4 + ')-(' + d2 + '-' + d2 + '-' + d4 + ')'), '\\1/\\2') .gsub(Regexp.new('(' + d4 + ')-(' + d4 + ')'), '\\1/\\2') .gsub(Regexp.new('(' + d4 + '-' + d2 + ')-(' + d4 + ')'), '\\1/\\2') .gsub(Regexp.new('(' + d4 + '-' + d2 + '-' + d2 + ')-(' + d4 + ')'), '\\1/\\2') end |
#add_zeroes(str) ⇒ Object
32 33 34 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 32 def add_zeroes str str.strip.gsub(/\b(\d)\b/, '0\\1').gsub(/\b([\dX][\dX][\dX])[^\dX]/, '\\1X') end |
#arrange(str) ⇒ Object
55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 55 def arrange str if Regexp.new(d4 + '-' + d2 + '-' + d2, 'g').match(str) str elsif Regexp.new(d2 + '-' + d2 + '-' + d4, 'g').match(str) str.gsub(Regexp.new('(' + d2 + ')-(' + d2 + ')-(' + d4 + ')'), '\\3-\\2-\\1') elsif Regexp.new(d2 + '-' + d4 + '-' + d2, 'g').match(str) str.gsub(Regexp.new('(' + d2 + ')-(' + d4 + ')-(' + d2 + ')'), '\\2-\\1-\\3') elsif Regexp.new(d4 + '-' + d2, 'g').match(str) str elsif Regexp.new(d2 + '-' + d4, 'g').match(str) str.gsub(Regexp.new('(' + d2 + ')-(' + d4 + ')'), '\\2-\\1') else str end end |
#clean_extra_words(str) ⇒ Object
28 29 30 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 28 def clean_extra_words str str.strip.gsub(/[a-z]/, '').gsub(/ +/, ' ') end |
#clean_words(str) ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 9 def clean_words str cleaned_string = str.strip.downcase months.each do |month, value| cleaned_string = cleaned_string.gsub(Regexp.new(month), value) end seasons.each do |season, value| cleaned_string = cleaned_string.gsub(Regexp.new(season), value) end descriptors.each do |descriptor, value| cleaned_string = cleaned_string.gsub(Regexp.new(descriptor), value) end cleaned_string end |
#convert_date(input) ⇒ Object
85 86 87 88 89 90 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 85 def convert_date input return input if Date.edtf(input) clean_date = clean_extra_words(machine_clean(clean_words(scrub(input)))) clean_date = dirty(rearrange(add_separators(add_zeroes(clean_date)))) Date.edtf(clean_date) ? clean_date : nil end |
#d2 ⇒ Object
40 41 42 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 40 def d2 '[\\dX][\\dX][?~]?' end |
#d4 ⇒ Object
36 37 38 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 36 def d4 '[\\dX][\\dX][\\dX][\\dX][?~]?' end |
#descriptors ⇒ Object
118 119 120 121 122 123 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 118 def descriptors { '(\\d.*)to(.*\\d)' => '\\1/\\2', '\\s*(around|about|abt|estimated|est|circa|approximately|approx)\\s*' => '~' } end |
#dirty(str) ⇒ Object
80 81 82 83 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 80 def dirty str clean_input = str.gsub(/^\*|\*$/, 'open').gsub(/^\//, 'unknown/').gsub(/\/$/, '/unknown') clean_input.gsub(/X/, 'u') end |
#machine_clean(str) ⇒ Object
23 24 25 26 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 23 def machine_clean str clean_input = str.gsub(/open/, '*').gsub(/unknown/, '').gsub(/[^\du]u[^\du]/, '') clean_input.gsub(/u/, 'X') end |
#months ⇒ Object
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 92 def months { 'january|jan' => '01', 'february|feb' => '02', 'march|mar' => '03', 'april|apr' => '04', 'may' => '05', 'june|jun' => '06', 'july|jul' => '07', 'august|aug' => '08', 'september|sep' => '09', 'october|oct' => '10', 'november|nov' => '11', 'december|dec' => '12' } end |
#rearrange(str) ⇒ Object
71 72 73 74 75 76 77 78 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 71 def rearrange str if str.include? '/' split_string = str.split('/') arrange(split_string[0]) + '/' + arrange(split_string[1]) else arrange(str) end end |
#scrub(str) ⇒ Object
5 6 7 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 5 def scrub str str.strip.downcase.gsub(/[\|,.\[\]'"]/, ' ').gsub(/(\d+)\s*(st|nd|rd|th)\b/, '\\1') end |
#seasons ⇒ Object
109 110 111 112 113 114 115 116 |
# File 'app/helpers/vaultify/edtf_helper.rb', line 109 def seasons { 'spring|spr' => '21', 'summer|summ|sum' => '22', 'autumn|aut|fall|fal' => '23', 'winter|wint|win' => '24' } end |