work_day 0.3.1 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +11 -0
- data/README.md +91 -10
- data/bitbucket-pipelines.yml +20 -0
- data/data/{holidays.json → brazil_holidays.json} +0 -0
- data/data/london_holidays.json +1 -0
- data/data/new_york_holidays.json +1 -0
- data/lib/holiday.rb +25 -18
- data/lib/work_day/version.rb +4 -2
- data/lib/work_day.rb +43 -21
- data/work_day.gemspec +12 -11
- metadata +8 -5
- data/circle.yml +0 -3
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 5dbab133cfa019db8bf4da785732cf062c5cd245
         | 
| 4 | 
            +
              data.tar.gz: d3c89c74daaced2e046c6790d6582c15703064fb
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 56638a726e8d5193403fdf3cfe5f8ae6e531cd5e710b85bcf3701f1153be0bc5038b38a7f19b58444832e7e4bffe500cdcb22781bdb9328cbae4b56f1477f0e6
         | 
| 7 | 
            +
              data.tar.gz: 98279d2e4115ab8d3d8d924f9731c18c5d4ad4de35f9fa36c78da52b3cff59a1d7332dec60c23b2f3df0fe426f5684d96e7f5165107ebc0ea3fad8d525712f3c
         | 
    
        data/CHANGELOG.md
    ADDED
    
    | @@ -0,0 +1,11 @@ | |
| 1 | 
            +
            # Changelog
         | 
| 2 | 
            +
            All notable changes to this project will be documented in this file.
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/)
         | 
| 5 | 
            +
            and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            ## [Unreleased]
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## [1.0.0] - 2018-03-27
         | 
| 10 | 
            +
            ### Added
         | 
| 11 | 
            +
            - Feature for foreign calendars
         | 
    
        data/README.md
    CHANGED
    
    | @@ -1,8 +1,6 @@ | |
| 1 1 | 
             
            # WorkDay
         | 
| 2 2 |  | 
| 3 | 
            -
             | 
| 4 | 
            -
             | 
| 5 | 
            -
            TODO: Delete this and the text above, and describe your gem
         | 
| 3 | 
            +
            Gem para verificação de dias úteis e cálculo entre datas úteis.
         | 
| 6 4 |  | 
| 7 5 | 
             
            ## Installation
         | 
| 8 6 |  | 
| @@ -22,20 +20,103 @@ Or install it yourself as: | |
| 22 20 |  | 
| 23 21 | 
             
            ## Usage
         | 
| 24 22 |  | 
| 25 | 
            -
            TODO: Write usage instructions here
         | 
| 26 23 |  | 
| 27 | 
            -
             | 
| 24 | 
            +
            ### WorkDay.work_day?(date)
         | 
| 25 | 
            +
            Verifica se uma data é um dia útil
         | 
| 26 | 
            +
             | 
| 27 | 
            +
             | 
| 28 | 
            +
            ```ruby
         | 
| 29 | 
            +
            > WorkDay.work_day?("2017-01-01")
         | 
| 30 | 
            +
            => false
         | 
| 31 | 
            +
            > WorkDay.work_day?("2017-01-05")
         | 
| 32 | 
            +
            => true
         | 
| 33 | 
            +
            ```
         | 
| 34 | 
            +
             | 
| 35 | 
            +
             | 
| 28 36 |  | 
| 29 | 
            -
             | 
| 37 | 
            +
            ### WorkDay.last_until(date, days = 0)
         | 
| 38 | 
            +
            Retorna o n-dia útil até certa data.
         | 
| 30 39 |  | 
| 31 | 
            -
            To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
         | 
| 32 40 |  | 
| 33 | 
            -
             | 
| 41 | 
            +
            ###### Passando uma data útil, com 0 dias
         | 
| 42 | 
            +
            ```ruby
         | 
| 43 | 
            +
            > WorkDay.last_until("2017-01-05")
         | 
| 44 | 
            +
            => Thu, 05 Jan 2017 # retorna a própria data por ser uma data útil
         | 
| 45 | 
            +
            ```
         | 
| 34 46 |  | 
| 35 | 
            -
             | 
| 47 | 
            +
            ###### Passando uma data não-útil, com 0 dias
         | 
| 48 | 
            +
            ```ruby
         | 
| 49 | 
            +
            > WorkDay.last_until("2017-01-08")
         | 
| 50 | 
            +
            => Fri, 06 Jan 2017 # retorna o primeiro dia útil anterior a data passada
         | 
| 51 | 
            +
            ```
         | 
| 36 52 |  | 
| 53 | 
            +
            ###### Passando uma data útil, com 2 dias
         | 
| 54 | 
            +
            ```ruby
         | 
| 55 | 
            +
            > WorkDay.last_until("2017-01-05", 2)
         | 
| 56 | 
            +
            => Tue, 03 Jan 2017 # retorna a data 2 dias úteis anteriores a data passada
         | 
| 57 | 
            +
            ```
         | 
| 58 | 
            +
             | 
| 59 | 
            +
            ###### Passando uma data não-útil, com 2 dias
         | 
| 60 | 
            +
            ```ruby
         | 
| 61 | 
            +
            > WorkDay.last_until("2017-01-08", 2)
         | 
| 62 | 
            +
            => Wed, 04 Jan 2017 # retorna a data 2 dias úteis anteriores a data passada
         | 
| 63 | 
            +
            ```
         | 
| 64 | 
            +
             | 
| 65 | 
            +
             | 
| 66 | 
            +
             | 
| 67 | 
            +
            ### WorkDay.next_after(date, days = 1)
         | 
| 68 | 
            +
            Retorna o n-dia útil após certa data
         | 
| 69 | 
            +
             | 
| 70 | 
            +
             | 
| 71 | 
            +
            ###### Passando uma data útil, com 2 dias
         | 
| 72 | 
            +
            ```ruby
         | 
| 73 | 
            +
            > WorkDay.next_after("2017-01-05", 2)
         | 
| 74 | 
            +
            => Mon, 09 Jan 2017
         | 
| 75 | 
            +
            ```
         | 
| 76 | 
            +
             | 
| 77 | 
            +
            ###### Passando uma data não-útil, com 2 dias
         | 
| 78 | 
            +
            ```ruby
         | 
| 79 | 
            +
            > WorkDay.next_after("2017-01-07", 2)
         | 
| 80 | 
            +
            => Tue, 10 Jan 2017
         | 
| 81 | 
            +
            ```
         | 
| 82 | 
            +
             | 
| 83 | 
            +
            ###### Passando uma data útil, com 1 dia
         | 
| 84 | 
            +
            ```ruby
         | 
| 85 | 
            +
            > WorkDay.next_after("2017-01-05")
         | 
| 86 | 
            +
            => Fri, 06 Jan 2017
         | 
| 87 | 
            +
            ```
         | 
| 88 | 
            +
             | 
| 89 | 
            +
            ###### Passando uma data não-útil, com 1 dia
         | 
| 90 | 
            +
            ```ruby
         | 
| 91 | 
            +
            > WorkDay.next_after("2017-01-07")
         | 
| 92 | 
            +
            => Mon, 09 Jan 2017
         | 
| 93 | 
            +
            ```
         | 
| 94 | 
            +
             | 
| 95 | 
            +
             | 
| 96 | 
            +
            ### WorkDay.between(start_date, end_date)
         | 
| 97 | 
            +
             | 
| 98 | 
            +
            Lista todas as datas úteis entre 2 datas (`start_date` e `end_date`)
         | 
| 99 | 
            +
             | 
| 100 | 
            +
             | 
| 101 | 
            +
            ```ruby
         | 
| 102 | 
            +
            > WorkDay.between("2013-01-05", "2013-01-10")
         | 
| 103 | 
            +
            => [Mon, 07 Jan 2013,
         | 
| 104 | 
            +
            Tue, 08 Jan 2013,
         | 
| 105 | 
            +
            Wed, 09 Jan 2013,
         | 
| 106 | 
            +
            Thu, 10 Jan 2013]
         | 
| 107 | 
            +
            ```
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            ### Escolhendo calendários
         | 
| 110 | 
            +
             | 
| 111 | 
            +
            Pode ser utilizado mais de um calendário ao mesmo tempo
         | 
| 112 | 
            +
            Calendários disponíveis london, new_york e brazil
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            ```ruby
         | 
| 115 | 
            +
            > wd = WorkDay.new(['london', 'new_york'])
         | 
| 116 | 
            +
            > wd.work_day?("2018-05-28")
         | 
| 117 | 
            +
            => false
         | 
| 118 | 
            +
            ```
         | 
| 37 119 |  | 
| 38 120 | 
             
            ## License
         | 
| 39 121 |  | 
| 40 122 | 
             
            The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
         | 
| 41 | 
            -
             | 
| @@ -0,0 +1,20 @@ | |
| 1 | 
            +
            image: ruby:2.2.5
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            pipelines:
         | 
| 4 | 
            +
              default:
         | 
| 5 | 
            +
                - step:
         | 
| 6 | 
            +
                    script:
         | 
| 7 | 
            +
                      - git archive --remote=git@bitbucket.org:guideinvestimentos/rails_defaults.git HEAD .rubocop.yml | tar -x
         | 
| 8 | 
            +
                      - bundle install
         | 
| 9 | 
            +
                      - gem install rubocop
         | 
| 10 | 
            +
                      - rspec -fdoc
         | 
| 11 | 
            +
                      - rubocop .
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              branches:
         | 
| 14 | 
            +
                master:
         | 
| 15 | 
            +
                  - step:
         | 
| 16 | 
            +
                      script:
         | 
| 17 | 
            +
                        - gem build work_day.gemspec
         | 
| 18 | 
            +
                        - curl -u $RUBYGEMS_USERNAME:$RUBYGEMS_PASSWORD https://rubygems.org/api/v1/api_key.yaml > ~/.gem/credentials
         | 
| 19 | 
            +
                        - chmod 0600 ~/.gem/credentials
         | 
| 20 | 
            +
                        - gem push $(ls *.gem)
         | 
| 
            File without changes
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            ["1990-01-01","1990-03-30","1990-04-02","1990-05-07","1990-05-28","1990-08-27","1990-12-25","1990-12-26","1991-01-01","1991-03-30","1991-04-02","1991-05-07","1991-05-28","1991-08-27","1991-12-25","1991-12-26","1992-01-01","1992-03-30","1992-04-02","1992-05-07","1992-05-28","1992-08-27","1992-12-25","1992-12-26","1993-01-01","1993-03-30","1993-04-02","1993-05-07","1993-05-28","1993-08-27","1993-12-25","1993-12-26","1994-01-01","1994-03-30","1994-04-02","1994-05-07","1994-05-28","1994-08-27","1994-12-25","1994-12-26","1995-01-01","1995-03-30","1995-04-02","1995-05-07","1995-05-28","1995-08-27","1995-12-25","1995-12-26","1996-01-01","1996-03-30","1996-04-02","1996-05-07","1996-05-28","1996-08-27","1996-12-25","1996-12-26","1997-01-01","1997-03-30","1997-04-02","1997-05-07","1997-05-28","1997-08-27","1997-12-25","1997-12-26","1998-01-01","1998-03-30","1998-04-02","1998-05-07","1998-05-28","1998-08-27","1998-12-25","1998-12-26","1999-01-01","1999-03-30","1999-04-02","1999-05-07","1999-05-28","1999-08-27","1999-12-25","1999-12-26","2000-01-01","2000-03-30","2000-04-02","2000-05-07","2000-05-28","2000-08-27","2000-12-25","2000-12-26","2001-01-01","2001-03-30","2001-04-02","2001-05-07","2001-05-28","2001-08-27","2001-12-25","2001-12-26","2002-01-01","2002-03-30","2002-04-02","2002-05-07","2002-05-28","2002-08-27","2002-12-25","2002-12-26","2003-01-01","2003-03-30","2003-04-02","2003-05-07","2003-05-28","2003-08-27","2003-12-25","2003-12-26","2004-01-01","2004-03-30","2004-04-02","2004-05-07","2004-05-28","2004-08-27","2004-12-25","2004-12-26","2005-01-01","2005-03-30","2005-04-02","2005-05-07","2005-05-28","2005-08-27","2005-12-25","2005-12-26","2006-01-01","2006-03-30","2006-04-02","2006-05-07","2006-05-28","2006-08-27","2006-12-25","2006-12-26","2007-01-01","2007-03-30","2007-04-02","2007-05-07","2007-05-28","2007-08-27","2007-12-25","2007-12-26","2008-01-01","2008-03-30","2008-04-02","2008-05-07","2008-05-28","2008-08-27","2008-12-25","2008-12-26","2009-01-01","2009-03-30","2009-04-02","2009-05-07","2009-05-28","2009-08-27","2009-12-25","2009-12-26","2010-01-01","2010-03-30","2010-04-02","2010-05-07","2010-05-28","2010-08-27","2010-12-25","2010-12-26","2011-01-01","2011-03-30","2011-04-02","2011-05-07","2011-05-28","2011-08-27","2011-12-25","2011-12-26","2012-01-01","2012-03-30","2012-04-02","2012-05-07","2012-05-28","2012-08-27","2012-12-25","2012-12-26","2013-01-01","2013-03-30","2013-04-02","2013-05-07","2013-05-28","2013-08-27","2013-12-25","2013-12-26","2014-01-01","2014-03-30","2014-04-02","2014-05-07","2014-05-28","2014-08-27","2014-12-25","2014-12-26","2015-01-01","2015-03-30","2015-04-02","2015-05-07","2015-05-28","2015-08-27","2015-12-25","2015-12-26","2016-01-01","2016-03-30","2016-04-02","2016-05-07","2016-05-28","2016-08-27","2016-12-25","2016-12-26","2017-01-01","2017-03-30","2017-04-02","2017-05-07","2017-05-28","2017-08-27","2017-12-25","2017-12-26","2018-01-01","2018-03-30","2018-04-02","2018-05-07","2018-05-28","2018-08-27","2018-12-25","2018-12-26","2019-01-01","2019-03-30","2019-04-02","2019-05-07","2019-05-28","2019-08-27","2019-12-25","2019-12-26","2020-01-01","2020-03-30","2020-04-02","2020-05-07","2020-05-28","2020-08-27","2020-12-25","2020-12-26","2021-01-01","2021-03-30","2021-04-02","2021-05-07","2021-05-28","2021-08-27","2021-12-25","2021-12-26","2022-01-01","2022-03-30","2022-04-02","2022-05-07","2022-05-28","2022-08-27","2022-12-25","2022-12-26","2023-01-01","2023-03-30","2023-04-02","2023-05-07","2023-05-28","2023-08-27","2023-12-25","2023-12-26","2024-01-01","2024-03-30","2024-04-02","2024-05-07","2024-05-28","2024-08-27","2024-12-25","2024-12-26","2025-01-01","2025-03-30","2025-04-02","2025-05-07","2025-05-28","2025-08-27","2025-12-25","2025-12-26","2026-01-01","2026-03-30","2026-04-02","2026-05-07","2026-05-28","2026-08-27","2026-12-25","2026-12-26","2027-01-01","2027-03-30","2027-04-02","2027-05-07","2027-05-28","2027-08-27","2027-12-25","2027-12-26","2028-01-01","2028-03-30","2028-04-02","2028-05-07","2028-05-28","2028-08-27","2028-12-25","2028-12-26","2029-01-01","2029-03-30","2029-04-02","2029-05-07","2029-05-28","2029-08-27","2029-12-25","2029-12-26","2030-01-01","2030-03-30","2030-04-02","2030-05-07","2030-05-28","2030-08-27","2030-12-25","2030-12-26","2031-01-01","2031-03-30","2031-04-02","2031-05-07","2031-05-28","2031-08-27","2031-12-25","2031-12-26","2032-01-01","2032-03-30","2032-04-02","2032-05-07","2032-05-28","2032-08-27","2032-12-25","2032-12-26","2033-01-01","2033-03-30","2033-04-02","2033-05-07","2033-05-28","2033-08-27","2033-12-25","2033-12-26","2034-01-01","2034-03-30","2034-04-02","2034-05-07","2034-05-28","2034-08-27","2034-12-25","2034-12-26","2035-01-01","2035-03-30","2035-04-02","2035-05-07","2035-05-28","2035-08-27","2035-12-25","2035-12-26","2036-01-01","2036-03-30","2036-04-02","2036-05-07","2036-05-28","2036-08-27","2036-12-25","2036-12-26","2037-01-01","2037-03-30","2037-04-02","2037-05-07","2037-05-28","2037-08-27","2037-12-25","2037-12-26","2038-01-01","2038-03-30","2038-04-02","2038-05-07","2038-05-28","2038-08-27","2038-12-25","2038-12-26","2039-01-01","2039-03-30","2039-04-02","2039-05-07","2039-05-28","2039-08-27","2039-12-25","2039-12-26","2040-01-01","2040-03-30","2040-04-02","2040-05-07","2040-05-28","2040-08-27","2040-12-25","2040-12-26","2041-01-01","2041-03-30","2041-04-02","2041-05-07","2041-05-28","2041-08-27","2041-12-25","2041-12-26","2042-01-01","2042-03-30","2042-04-02","2042-05-07","2042-05-28","2042-08-27","2042-12-25","2042-12-26","2043-01-01","2043-03-30","2043-04-02","2043-05-07","2043-05-28","2043-08-27","2043-12-25","2043-12-26","2044-01-01","2044-03-30","2044-04-02","2044-05-07","2044-05-28","2044-08-27","2044-12-25","2044-12-26","2045-01-01","2045-03-30","2045-04-02","2045-05-07","2045-05-28","2045-08-27","2045-12-25","2045-12-26","2046-01-01","2046-03-30","2046-04-02","2046-05-07","2046-05-28","2046-08-27","2046-12-25","2046-12-26","2047-01-01","2047-03-30","2047-04-02","2047-05-07","2047-05-28","2047-08-27","2047-12-25","2047-12-26","2048-01-01","2048-03-30","2048-04-02","2048-05-07","2048-05-28","2048-08-27","2048-12-25","2048-12-26","2049-01-01","2049-03-30","2049-04-02","2049-05-07","2049-05-28","2049-08-27","2049-12-25","2049-12-26","2050-01-01","2050-03-30","2050-04-02","2050-05-07","2050-05-28","2050-08-27","2050-12-25","2050-12-26"]
         | 
| @@ -0,0 +1 @@ | |
| 1 | 
            +
            ["1990-01-01","1990-01-15","1990-02-19","1990-05-28","1990-07-04","1990-09-03","1990-10-08","1990-11-12","1990-11-22","1990-12-25","1991-01-01","1991-01-15","1991-02-19","1991-05-28","1991-07-04","1991-09-03","1991-10-08","1991-11-12","1991-11-22","1991-12-25","1992-01-01","1992-01-15","1992-02-19","1992-05-28","1992-07-04","1992-09-03","1992-10-08","1992-11-12","1992-11-22","1992-12-25","1993-01-01","1993-01-15","1993-02-19","1993-05-28","1993-07-04","1993-09-03","1993-10-08","1993-11-12","1993-11-22","1993-12-25","1994-01-01","1994-01-15","1994-02-19","1994-05-28","1994-07-04","1994-09-03","1994-10-08","1994-11-12","1994-11-22","1994-12-25","1995-01-01","1995-01-15","1995-02-19","1995-05-28","1995-07-04","1995-09-03","1995-10-08","1995-11-12","1995-11-22","1995-12-25","1996-01-01","1996-01-15","1996-02-19","1996-05-28","1996-07-04","1996-09-03","1996-10-08","1996-11-12","1996-11-22","1996-12-25","1997-01-01","1997-01-15","1997-02-19","1997-05-28","1997-07-04","1997-09-03","1997-10-08","1997-11-12","1997-11-22","1997-12-25","1998-01-01","1998-01-15","1998-02-19","1998-05-28","1998-07-04","1998-09-03","1998-10-08","1998-11-12","1998-11-22","1998-12-25","1999-01-01","1999-01-15","1999-02-19","1999-05-28","1999-07-04","1999-09-03","1999-10-08","1999-11-12","1999-11-22","1999-12-25","2000-01-01","2000-01-15","2000-02-19","2000-05-28","2000-07-04","2000-09-03","2000-10-08","2000-11-12","2000-11-22","2000-12-25","2001-01-01","2001-01-15","2001-02-19","2001-05-28","2001-07-04","2001-09-03","2001-10-08","2001-11-12","2001-11-22","2001-12-25","2002-01-01","2002-01-15","2002-02-19","2002-05-28","2002-07-04","2002-09-03","2002-10-08","2002-11-12","2002-11-22","2002-12-25","2003-01-01","2003-01-15","2003-02-19","2003-05-28","2003-07-04","2003-09-03","2003-10-08","2003-11-12","2003-11-22","2003-12-25","2004-01-01","2004-01-15","2004-02-19","2004-05-28","2004-07-04","2004-09-03","2004-10-08","2004-11-12","2004-11-22","2004-12-25","2005-01-01","2005-01-15","2005-02-19","2005-05-28","2005-07-04","2005-09-03","2005-10-08","2005-11-12","2005-11-22","2005-12-25","2006-01-01","2006-01-15","2006-02-19","2006-05-28","2006-07-04","2006-09-03","2006-10-08","2006-11-12","2006-11-22","2006-12-25","2007-01-01","2007-01-15","2007-02-19","2007-05-28","2007-07-04","2007-09-03","2007-10-08","2007-11-12","2007-11-22","2007-12-25","2008-01-01","2008-01-15","2008-02-19","2008-05-28","2008-07-04","2008-09-03","2008-10-08","2008-11-12","2008-11-22","2008-12-25","2009-01-01","2009-01-15","2009-02-19","2009-05-28","2009-07-04","2009-09-03","2009-10-08","2009-11-12","2009-11-22","2009-12-25","2010-01-01","2010-01-15","2010-02-19","2010-05-28","2010-07-04","2010-09-03","2010-10-08","2010-11-12","2010-11-22","2010-12-25","2011-01-01","2011-01-15","2011-02-19","2011-05-28","2011-07-04","2011-09-03","2011-10-08","2011-11-12","2011-11-22","2011-12-25","2012-01-01","2012-01-15","2012-02-19","2012-05-28","2012-07-04","2012-09-03","2012-10-08","2012-11-12","2012-11-22","2012-12-25","2013-01-01","2013-01-15","2013-02-19","2013-05-28","2013-07-04","2013-09-03","2013-10-08","2013-11-12","2013-11-22","2013-12-25","2014-01-01","2014-01-15","2014-02-19","2014-05-28","2014-07-04","2014-09-03","2014-10-08","2014-11-12","2014-11-22","2014-12-25","2015-01-01","2015-01-15","2015-02-19","2015-05-28","2015-07-04","2015-09-03","2015-10-08","2015-11-12","2015-11-22","2015-12-25","2016-01-01","2016-01-15","2016-02-19","2016-05-28","2016-07-04","2016-09-03","2016-10-08","2016-11-12","2016-11-22","2016-12-25","2017-01-01","2017-01-15","2017-02-19","2017-05-28","2017-07-04","2017-09-03","2017-10-08","2017-11-12","2017-11-22","2017-12-25","2018-01-01","2018-01-15","2018-02-19","2018-05-28","2018-07-04","2018-09-03","2018-10-08","2018-11-12","2018-11-22","2018-12-25","2019-01-01","2019-01-15","2019-02-19","2019-05-28","2019-07-04","2019-09-03","2019-10-08","2019-11-12","2019-11-22","2019-12-25","2020-01-01","2020-01-15","2020-02-19","2020-05-28","2020-07-04","2020-09-03","2020-10-08","2020-11-12","2020-11-22","2020-12-25","2021-01-01","2021-01-15","2021-02-19","2021-05-28","2021-07-04","2021-09-03","2021-10-08","2021-11-12","2021-11-22","2021-12-25","2022-01-01","2022-01-15","2022-02-19","2022-05-28","2022-07-04","2022-09-03","2022-10-08","2022-11-12","2022-11-22","2022-12-25","2023-01-01","2023-01-15","2023-02-19","2023-05-28","2023-07-04","2023-09-03","2023-10-08","2023-11-12","2023-11-22","2023-12-25","2024-01-01","2024-01-15","2024-02-19","2024-05-28","2024-07-04","2024-09-03","2024-10-08","2024-11-12","2024-11-22","2024-12-25","2025-01-01","2025-01-15","2025-02-19","2025-05-28","2025-07-04","2025-09-03","2025-10-08","2025-11-12","2025-11-22","2025-12-25","2026-01-01","2026-01-15","2026-02-19","2026-05-28","2026-07-04","2026-09-03","2026-10-08","2026-11-12","2026-11-22","2026-12-25","2027-01-01","2027-01-15","2027-02-19","2027-05-28","2027-07-04","2027-09-03","2027-10-08","2027-11-12","2027-11-22","2027-12-25","2028-01-01","2028-01-15","2028-02-19","2028-05-28","2028-07-04","2028-09-03","2028-10-08","2028-11-12","2028-11-22","2028-12-25","2029-01-01","2029-01-15","2029-02-19","2029-05-28","2029-07-04","2029-09-03","2029-10-08","2029-11-12","2029-11-22","2029-12-25","2030-01-01","2030-01-15","2030-02-19","2030-05-28","2030-07-04","2030-09-03","2030-10-08","2030-11-12","2030-11-22","2030-12-25","2031-01-01","2031-01-15","2031-02-19","2031-05-28","2031-07-04","2031-09-03","2031-10-08","2031-11-12","2031-11-22","2031-12-25","2032-01-01","2032-01-15","2032-02-19","2032-05-28","2032-07-04","2032-09-03","2032-10-08","2032-11-12","2032-11-22","2032-12-25","2033-01-01","2033-01-15","2033-02-19","2033-05-28","2033-07-04","2033-09-03","2033-10-08","2033-11-12","2033-11-22","2033-12-25","2034-01-01","2034-01-15","2034-02-19","2034-05-28","2034-07-04","2034-09-03","2034-10-08","2034-11-12","2034-11-22","2034-12-25","2035-01-01","2035-01-15","2035-02-19","2035-05-28","2035-07-04","2035-09-03","2035-10-08","2035-11-12","2035-11-22","2035-12-25","2036-01-01","2036-01-15","2036-02-19","2036-05-28","2036-07-04","2036-09-03","2036-10-08","2036-11-12","2036-11-22","2036-12-25","2037-01-01","2037-01-15","2037-02-19","2037-05-28","2037-07-04","2037-09-03","2037-10-08","2037-11-12","2037-11-22","2037-12-25","2038-01-01","2038-01-15","2038-02-19","2038-05-28","2038-07-04","2038-09-03","2038-10-08","2038-11-12","2038-11-22","2038-12-25","2039-01-01","2039-01-15","2039-02-19","2039-05-28","2039-07-04","2039-09-03","2039-10-08","2039-11-12","2039-11-22","2039-12-25","2040-01-01","2040-01-15","2040-02-19","2040-05-28","2040-07-04","2040-09-03","2040-10-08","2040-11-12","2040-11-22","2040-12-25","2041-01-01","2041-01-15","2041-02-19","2041-05-28","2041-07-04","2041-09-03","2041-10-08","2041-11-12","2041-11-22","2041-12-25","2042-01-01","2042-01-15","2042-02-19","2042-05-28","2042-07-04","2042-09-03","2042-10-08","2042-11-12","2042-11-22","2042-12-25","2043-01-01","2043-01-15","2043-02-19","2043-05-28","2043-07-04","2043-09-03","2043-10-08","2043-11-12","2043-11-22","2043-12-25","2044-01-01","2044-01-15","2044-02-19","2044-05-28","2044-07-04","2044-09-03","2044-10-08","2044-11-12","2044-11-22","2044-12-25","2045-01-01","2045-01-15","2045-02-19","2045-05-28","2045-07-04","2045-09-03","2045-10-08","2045-11-12","2045-11-22","2045-12-25","2046-01-01","2046-01-15","2046-02-19","2046-05-28","2046-07-04","2046-09-03","2046-10-08","2046-11-12","2046-11-22","2046-12-25","2047-01-01","2047-01-15","2047-02-19","2047-05-28","2047-07-04","2047-09-03","2047-10-08","2047-11-12","2047-11-22","2047-12-25","2048-01-01","2048-01-15","2048-02-19","2048-05-28","2048-07-04","2048-09-03","2048-10-08","2048-11-12","2048-11-22","2048-12-25","2049-01-01","2049-01-15","2049-02-19","2049-05-28","2049-07-04","2049-09-03","2049-10-08","2049-11-12","2049-11-22","2049-12-25","2050-01-01","2050-01-15","2050-02-19","2050-05-28","2050-07-04","2050-09-03","2050-10-08","2050-11-12","2050-11-22","2050-12-25"]
         | 
    
        data/lib/holiday.rb
    CHANGED
    
    | @@ -1,34 +1,41 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'json'
         | 
| 4 | 
            +
            require 'singleton'
         | 
| 3 5 |  | 
| 4 6 | 
             
            class Holiday
         | 
| 5 | 
            -
               | 
| 6 | 
            -
              attr_reader :holidays
         | 
| 7 | 
            +
              attr_reader :holidays, :calendars
         | 
| 7 8 |  | 
| 8 | 
            -
              def  | 
| 9 | 
            -
                 | 
| 9 | 
            +
              def initialize(calendars)
         | 
| 10 | 
            +
                @calendars = calendars
         | 
| 10 11 | 
             
              end
         | 
| 11 12 |  | 
| 12 13 | 
             
              def load_data
         | 
| 13 14 | 
             
                @holidays = {}
         | 
| 14 15 |  | 
| 15 | 
            -
                 | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 16 | 
            +
                calendars.each do |calendar|
         | 
| 17 | 
            +
                  file = File.expand_path(
         | 
| 18 | 
            +
                    File.dirname(__FILE__) + "/../data/#{calendar}_holidays.json"
         | 
| 19 | 
            +
                  )
         | 
| 20 | 
            +
                  raw_data = File.read(file)
         | 
| 21 | 
            +
                  parsed = JSON.parse(raw_data)
         | 
| 22 | 
            +
                  update_holidays(parsed)
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              def in(year)
         | 
| 27 | 
            +
                load_data if holidays.nil?
         | 
| 28 | 
            +
                holidays[year]
         | 
| 29 | 
            +
              end
         | 
| 18 30 |  | 
| 31 | 
            +
              private
         | 
| 32 | 
            +
             | 
| 33 | 
            +
              def update_holidays(parsed)
         | 
| 19 34 | 
             
                parsed.map do |str|
         | 
| 20 | 
            -
                   | 
| 35 | 
            +
                  str.split('-')
         | 
| 21 36 | 
             
                  date = Date.parse(str)
         | 
| 22 37 | 
             
                  @holidays[date.year] ||= []
         | 
| 23 38 | 
             
                  @holidays[date.year] << date
         | 
| 24 39 | 
             
                end
         | 
| 25 | 
            -
             | 
| 26 | 
            -
                @holidays
         | 
| 27 | 
            -
              end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
              def self.in(year)
         | 
| 30 | 
            -
                load_data if instance.holidays.nil?
         | 
| 31 | 
            -
                holidays = instance.holidays[year]
         | 
| 32 | 
            -
                holidays
         | 
| 33 40 | 
             
              end
         | 
| 34 41 | 
             
            end
         | 
    
        data/lib/work_day/version.rb
    CHANGED
    
    
    
        data/lib/work_day.rb
    CHANGED
    
    | @@ -1,27 +1,32 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            require "active_support"
         | 
| 3 | 
            -
            require "active_support/core_ext"
         | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 4 2 |  | 
| 5 | 
            -
             | 
| 6 | 
            -
             | 
| 3 | 
            +
            require 'holiday'
         | 
| 4 | 
            +
            require 'active_support'
         | 
| 5 | 
            +
            require 'active_support/core_ext'
         | 
| 7 6 |  | 
| 8 | 
            -
             | 
| 9 | 
            -
             | 
| 10 | 
            -
             | 
| 11 | 
            -
             | 
| 7 | 
            +
            class WorkDay
         | 
| 8 | 
            +
              attr_reader :calendars
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              def initialize(calendars = ['brazil'])
         | 
| 11 | 
            +
                @calendars = calendars
         | 
| 12 | 
            +
                @holidays = {}
         | 
| 12 13 | 
             
              end
         | 
| 13 14 |  | 
| 14 | 
            -
              def  | 
| 15 | 
            -
                 | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
                  end
         | 
| 19 | 
            -
                  days -= 1
         | 
| 20 | 
            -
                  days == -1 ? date : last_until(1.day.ago(date), days)
         | 
| 21 | 
            -
                end
         | 
| 15 | 
            +
              def work_day?(date)
         | 
| 16 | 
            +
                date = date.try(:to_date)
         | 
| 17 | 
            +
                return unless date
         | 
| 18 | 
            +
                ![0, 6].include?(date.wday) && !holidays_in(date.year).include?(date)
         | 
| 22 19 | 
             
              end
         | 
| 23 20 |  | 
| 24 | 
            -
              def  | 
| 21 | 
            +
              def last_until(date, days = 0)
         | 
| 22 | 
            +
                date = date.try(:to_date)
         | 
| 23 | 
            +
                return unless date
         | 
| 24 | 
            +
                date -= 1 until work_day?(date)
         | 
| 25 | 
            +
                days -= 1
         | 
| 26 | 
            +
                days == -1 ? date : last_until(1.day.ago(date), days)
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              def next_after(date, days = 1)
         | 
| 25 30 | 
             
                date = date.try(:to_date)
         | 
| 26 31 | 
             
                day_counter = 0
         | 
| 27 32 | 
             
                while day_counter < days
         | 
| @@ -31,12 +36,29 @@ module WorkDay | |
| 31 36 | 
             
                work_day?(date) ? date : next_after(date)
         | 
| 32 37 | 
             
              end
         | 
| 33 38 |  | 
| 34 | 
            -
              def  | 
| 39 | 
            +
              def between(start_date, end_date)
         | 
| 35 40 | 
             
                (start_date.to_date..end_date.to_date).select { |date| work_day?(date) }
         | 
| 36 41 | 
             
              end
         | 
| 37 42 |  | 
| 43 | 
            +
              def self.work_day?(date)
         | 
| 44 | 
            +
                WorkDay.new.work_day?(date)
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              def self.last_until(date, days = 0)
         | 
| 48 | 
            +
                WorkDay.new.last_until(date, days)
         | 
| 49 | 
            +
              end
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              def self.next_after(date, days = 1)
         | 
| 52 | 
            +
                WorkDay.new.next_after(date, days)
         | 
| 53 | 
            +
              end
         | 
| 54 | 
            +
             | 
| 55 | 
            +
              def self.between(start_date, end_date)
         | 
| 56 | 
            +
                WorkDay.new.between(start_date, end_date)
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 38 59 | 
             
              private
         | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 60 | 
            +
             | 
| 61 | 
            +
              def holidays_in(year)
         | 
| 62 | 
            +
                @holidays[year] ||= Holiday.new(calendars).in(year)
         | 
| 41 63 | 
             
              end
         | 
| 42 64 | 
             
            end
         | 
    
        data/work_day.gemspec
    CHANGED
    
    | @@ -1,23 +1,24 @@ | |
| 1 | 
            -
            #  | 
| 2 | 
            -
             | 
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            lib = File.expand_path('lib', __dir__)
         | 
| 3 4 | 
             
            $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
         | 
| 4 5 | 
             
            require 'work_day/version'
         | 
| 5 6 |  | 
| 6 7 | 
             
            Gem::Specification.new do |spec|
         | 
| 7 | 
            -
              spec.name          =  | 
| 8 | 
            +
              spec.name          = 'work_day'
         | 
| 8 9 | 
             
              spec.version       = WorkDay::VERSION
         | 
| 9 | 
            -
              spec.authors       = [ | 
| 10 | 
            -
              spec.email         = [ | 
| 10 | 
            +
              spec.authors       = ['Adriano Bacha']
         | 
| 11 | 
            +
              spec.email         = ['abacha@gmail.com']
         | 
| 11 12 |  | 
| 12 | 
            -
              spec.summary       =  | 
| 13 | 
            -
              spec.license       =  | 
| 13 | 
            +
              spec.summary       = 'work days'
         | 
| 14 | 
            +
              spec.license       = 'MIT'
         | 
| 14 15 |  | 
| 15 16 | 
             
              spec.files         = `git ls-files -z`.split("\x0").reject do |f|
         | 
| 16 17 | 
             
                f.match(%r{^(test|spec|features)/})
         | 
| 17 18 | 
             
              end
         | 
| 18 | 
            -
              spec.require_paths = [ | 
| 19 | 
            +
              spec.require_paths = ['lib']
         | 
| 19 20 |  | 
| 20 | 
            -
              spec.add_development_dependency  | 
| 21 | 
            -
              spec.add_development_dependency  | 
| 22 | 
            -
              spec.add_runtime_dependency  | 
| 21 | 
            +
              spec.add_development_dependency 'bundler', '~> 1.13'
         | 
| 22 | 
            +
              spec.add_development_dependency 'rspec', '~> 3.0'
         | 
| 23 | 
            +
              spec.add_runtime_dependency 'activesupport', '>= 4.0'
         | 
| 23 24 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: work_day
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0. | 
| 4 | 
            +
              version: 1.0.0
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Adriano Bacha
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2018-03-27 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: bundler
         | 
| @@ -64,11 +64,14 @@ files: | |
| 64 64 | 
             
            - ".ruby-gemset"
         | 
| 65 65 | 
             
            - ".ruby-version"
         | 
| 66 66 | 
             
            - ".travis.yml"
         | 
| 67 | 
            +
            - CHANGELOG.md
         | 
| 67 68 | 
             
            - Gemfile
         | 
| 68 69 | 
             
            - LICENSE.txt
         | 
| 69 70 | 
             
            - README.md
         | 
| 70 | 
            -
            -  | 
| 71 | 
            -
            - data/ | 
| 71 | 
            +
            - bitbucket-pipelines.yml
         | 
| 72 | 
            +
            - data/brazil_holidays.json
         | 
| 73 | 
            +
            - data/london_holidays.json
         | 
| 74 | 
            +
            - data/new_york_holidays.json
         | 
| 72 75 | 
             
            - lib/holiday.rb
         | 
| 73 76 | 
             
            - lib/work_day.rb
         | 
| 74 77 | 
             
            - lib/work_day/version.rb
         | 
| @@ -93,7 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 93 96 | 
             
                  version: '0'
         | 
| 94 97 | 
             
            requirements: []
         | 
| 95 98 | 
             
            rubyforge_project: 
         | 
| 96 | 
            -
            rubygems_version: 2. | 
| 99 | 
            +
            rubygems_version: 2.6.8
         | 
| 97 100 | 
             
            signing_key: 
         | 
| 98 101 | 
             
            specification_version: 4
         | 
| 99 102 | 
             
            summary: work days
         | 
    
        data/circle.yml
    DELETED