Slide 1

Slide 1 text

For fun Using Boolean logic to deal with dates

Slide 2

Slide 2 text

The problem

Slide 3

Slide 3 text

The problem Parse a string to a Date object

Slide 4

Slide 4 text

The problem ● Date could be in the mm/dd/yyyy format

Slide 5

Slide 5 text

The problem ● Date could be in the mm/dd/yyyy format ● Date could be in any format recognisable by Date.parse

Slide 6

Slide 6 text

The problem ● Date could be in the mm/dd/yyyy format ● Date could be in any format recognisable by Date.parse ● Except the dd/mm/yyyy format

Slide 7

Slide 7 text

month_day_year = Date.strptime(string, "%m/%d/%Y") rescue nil

Slide 8

Slide 8 text

month_day_year = Date.strptime(string, "%m/%d/%Y") rescue nil generic_parse = Date.parse(string) rescue nil

Slide 9

Slide 9 text

month_day_year = Date.strptime(string, "%m/%d/%Y") rescue nil generic_parse = Date.parse(string) rescue nil day_month_year = Date.strptime(string, "%d/%m/%Y") rescue nil

Slide 10

Slide 10 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 0 1 1 1

Slide 11

Slide 11 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 0 1 1 1 0 0 1 0 1 X 1 1 0 1 1 1

Slide 12

Slide 12 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 1 0 1 1 1 0 0 1 0 1 X 1 1 0 1 1 1

Slide 13

Slide 13 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 1 0 1 1 0 1 0 0 1 0 1 X 1 1 0 1 1 1

Slide 14

Slide 14 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 X 1 1 0 1 1 1

Slide 15

Slide 15 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 X 1 1 0 X 1 1 1

Slide 16

Slide 16 text

month_day_year generic_parse day_month_year result 0 0 0 0 0 0 1 X 0 1 0 1 0 1 1 0 1 0 0 1 1 0 1 X 1 1 0 X 1 1 1 1

Slide 17

Slide 17 text

Makes your boolean functions simpler! Karnaugh map

Slide 18

Slide 18 text

0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 1 0 00 01 11 10

Slide 19

Slide 19 text

0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 1 0 00 01 11 10

Slide 20

Slide 20 text

0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 1 0 00 01 11 10

Slide 21

Slide 21 text

0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 1 0 00 01 11 10

Slide 22

Slide 22 text

month_day_year 0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 0 00 01 11 10 1

Slide 23

Slide 23 text

month_day_year ∨ ¬generic_parse ∧ day_month_year 0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 0 00 01 11 10 1

Slide 24

Slide 24 text

month_day_year ∨ ¬generic_parse ∧ day_month_year ∨ generic_parse ∧ ¬day_month_year 0 X 0 1 1 X 1 X generic_parse * day_month_year month_day_year 0 00 01 11 10 1

Slide 25

Slide 25 text

((month_day_year ? 1 : 0) + ((day_month_year ? 1 : 0) ^ (generic_parse ? 1 : 0)) == 0) month_day_year || generic_parse

Slide 26

Slide 26 text

Thank you! Irina Bednova @jafrog www.jafrog.com