Skip to content

Instantly share code, notes, and snippets.

@drakvuf
Created February 4, 2019 18:15
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
Star You must be signed in to star a gist
Save drakvuf/dce7c6cbe435106fce298bff0d3a33ce to your computer and use it in GitHub Desktop.
defmodule Scraper.Parser.Date do
@dates [
"ma 19:41",
"2019-01-14",
"2019. 01. 11.",
"2019.01.14 18:21",
"2019.01.14. 18:51",
"január 14. | 14:00",
"2019. 01. 14. 20:00",
"2019. jan. 13., 13:12",
"2019. január 14. 19:07",
"2019. január. 14. 20:00",
"/ 2018.08.03., péntek 13:00 /",
"2019. január 14. hétfő 12:20",
"2019. január 14. hétfő, 16:47",
"2019. január 14., hétfő 17:45",
"újságíró . 2019. 01. 14. 20:17",
"2019. január 14. 20:15 - szerző: Mészáros Márton",
"2018. április 10., kedd 10:43, frissítve: kedd 11:55",
]
@year_pattern "?<year>([\\d]{4})"
@january "jan|január"
@february "feb|február"
@march "már|március"
@april "ápr|április"
@may "már|március"
@june "jún|június"
@july "júl|július"
@august "aug|augusztus"
@september "szep|szeptember"
@october "okt|október"
@november "nov|november"
@december "dec|december"
@month_pattern "?<month>([0-1][0-2]|#{@january}|#{@february}|#{@march}|#{@april}|#{@may}|#{@june}|#{@july}|#{@august}|#{@september}|#{@october}|#{@november}|#{@december})"
@day_pattern "?<day>([0-3][0-9])"
@time_pattern "?<time>([\\d]{1,2}):[\\d]{2}"
@today_pattern "ma"
def get_dates(), do: @dates
def get_patterns(), do: [@year_pattern, @month_pattern, @day_pattern, @time_pattern]
def parse_date(datetime, patterns \\ [@time_pattern, @year_pattern, @month_pattern, @day_pattern]) do
patterns
|> compose_patterns()
|> IO.inspect
|> Regex.named_captures(datetime)
end
def compose_patterns(patterns) do
patterns
|> Enum.map(fn pattern -> "(#{pattern})" end)
|> Enum.join("|")
|> Regex.compile!
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment