From 4091ace759bbd7488b80a1a023cd428299273847 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Tue, 30 Jan 2024 12:31:32 +0530 Subject: [PATCH 01/13] add custom timezone amagi --- lib/tzinfo/amagi.rb | 5 +++ lib/tzinfo/amagi/customtimezone.rb | 8 +++++ .../amagi/defintionamagitimezone/Amagi.rb | 20 +++++++++++ lib/tzinfo/data_sources/ruby_data_source.rb | 34 ++++++++++++++++--- 4 files changed, 62 insertions(+), 5 deletions(-) create mode 100644 lib/tzinfo/amagi.rb create mode 100644 lib/tzinfo/amagi/customtimezone.rb create mode 100644 lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb diff --git a/lib/tzinfo/amagi.rb b/lib/tzinfo/amagi.rb new file mode 100644 index 00000000..f292b841 --- /dev/null +++ b/lib/tzinfo/amagi.rb @@ -0,0 +1,5 @@ +# Top level module for TZInfo. +module TZInfo + module Amagi + end +end diff --git a/lib/tzinfo/amagi/customtimezone.rb b/lib/tzinfo/amagi/customtimezone.rb new file mode 100644 index 00000000..6cb5cf48 --- /dev/null +++ b/lib/tzinfo/amagi/customtimezone.rb @@ -0,0 +1,8 @@ +module TZInfo + module Amagi + module Customtimezone + include TimezoneIndexDefinition + timezone 'Amagi' + end + end +end diff --git a/lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb b/lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb new file mode 100644 index 00000000..4490894b --- /dev/null +++ b/lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb @@ -0,0 +1,20 @@ +module TZInfo + module Amagi + module Definitionamagitimezone + module Amagi + include TimezoneDefinition + d = Date.current + d = Date.parse(ENV["AMAGI_DST_DATE"]) if ENV["AMAGI_DST_DATE"] + switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " 08:30:00").to_i + adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? ENV["AMAGI_DST_SWITCH_OFFSET"] : 23400 + timezone 'Amagi' do |tz| + tz.offset :o0, 19800, 0, :AST + tz.offset :o1, adst_offset, 0, :ADST + + tz.transition d.year, d.month, :o1, switch_over_epoch + + end + end + end + end +end diff --git a/lib/tzinfo/data_sources/ruby_data_source.rb b/lib/tzinfo/data_sources/ruby_data_source.rb index 41c384a4..6846dc37 100644 --- a/lib/tzinfo/data_sources/ruby_data_source.rb +++ b/lib/tzinfo/data_sources/ruby_data_source.rb @@ -54,10 +54,19 @@ def initialize end end + data_file_amagi = File.join('', 'tzinfo', 'amagi.rb') + path_amagi = $".reverse_each.detect {|p| p.end_with?(data_file_amagi) } + if path_amagi + @base_path_amagi_timezone = RubyCoreSupport.untaint(File.join(File.dirname(path_amagi), 'amagi' )) + else + @base_path_amagi_timezone = 'tzinfo/amagi' + end + require_index('timezones') require_index('countries') + require_data_amagi('customtimezone') - @data_timezone_identifiers = Data::Indexes::Timezones.data_timezones + @data_timezone_identifiers = Data::Indexes::Timezones.data_timezones + Amagi::Customtimezone.data_timezones @linked_timezone_identifiers = Data::Indexes::Timezones.linked_timezones @countries = Data::Indexes::Countries.countries @country_codes = @countries.keys.sort!.freeze @@ -90,11 +99,18 @@ def load_timezone_info(identifier) split_identifier = valid_identifier.gsub(/-/, '__m__').gsub(/\+/, '__p__').split('/') begin - require_definition(split_identifier) + if split_identifier == ["Amagi"] + require_definition_amagi("Amagi") + n = Amagi::Definitionamagitimezone + split_identifier.each {|part| n = n.const_get(part) } + n.get + else + require_definition(split_identifier) + m = Data::Definitions - m = Data::Definitions - split_identifier.each {|part| m = m.const_get(part) } - m.get + split_identifier.each {|part| m = m.const_get(part) } + m.get + end rescue LoadError, NameError => e raise InvalidTimezoneIdentifier, "#{e.message.encode(Encoding::UTF_8)} (loading #{valid_identifier})" end @@ -115,6 +131,10 @@ def require_definition(identifier) require_data('definitions', *identifier) end + def require_definition_amagi(identifier) + require_data_amagi('defintionamagitimezone', *identifier) + end + # Requires an index by its name. # # @param name [String] an index name. @@ -129,6 +149,10 @@ def require_data(*file) require(File.join(@base_path, *file)) end + def require_data_amagi(*file) + require(File.join(@base_path_amagi_timezone, *file)) + end + # @return [String] a `String` containing TZInfo::Data version infomation # for inclusion in the #to_s and #inspect output. def version_info From 38c0e2cfd9d378216ba2cb7b0c80994e978a9392 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Tue, 30 Jan 2024 13:53:05 +0530 Subject: [PATCH 02/13] remove freeze array from data_timezones --- lib/tzinfo/format1/timezone_index_definition.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tzinfo/format1/timezone_index_definition.rb b/lib/tzinfo/format1/timezone_index_definition.rb index 5d4518aa..69bc3294 100644 --- a/lib/tzinfo/format1/timezone_index_definition.rb +++ b/lib/tzinfo/format1/timezone_index_definition.rb @@ -31,7 +31,7 @@ module ClassMethods #:nodoc: # `String#<=>`. def data_timezones unless @data_timezones.frozen? - @data_timezones = @data_timezones.sort.freeze + @data_timezones = @data_timezones.sort end @data_timezones end From 324949fb58de27849beb4c62951707ae08f4c4a5 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Tue, 30 Jan 2024 15:11:59 +0530 Subject: [PATCH 03/13] rename the files --- .../amagi/{defintionamagitimezone => definition}/Amagi.rb | 2 +- lib/tzinfo/amagi/{customtimezone.rb => timezone.rb} | 2 +- lib/tzinfo/data_sources/ruby_data_source.rb | 8 ++++---- 3 files changed, 6 insertions(+), 6 deletions(-) rename lib/tzinfo/amagi/{defintionamagitimezone => definition}/Amagi.rb (95%) rename lib/tzinfo/amagi/{customtimezone.rb => timezone.rb} (80%) diff --git a/lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb similarity index 95% rename from lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb rename to lib/tzinfo/amagi/definition/Amagi.rb index 4490894b..2b927692 100644 --- a/lib/tzinfo/amagi/defintionamagitimezone/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -1,6 +1,6 @@ module TZInfo module Amagi - module Definitionamagitimezone + module Definition module Amagi include TimezoneDefinition d = Date.current diff --git a/lib/tzinfo/amagi/customtimezone.rb b/lib/tzinfo/amagi/timezone.rb similarity index 80% rename from lib/tzinfo/amagi/customtimezone.rb rename to lib/tzinfo/amagi/timezone.rb index 6cb5cf48..de1afd64 100644 --- a/lib/tzinfo/amagi/customtimezone.rb +++ b/lib/tzinfo/amagi/timezone.rb @@ -1,6 +1,6 @@ module TZInfo module Amagi - module Customtimezone + module Timezone include TimezoneIndexDefinition timezone 'Amagi' end diff --git a/lib/tzinfo/data_sources/ruby_data_source.rb b/lib/tzinfo/data_sources/ruby_data_source.rb index 6846dc37..e836ae27 100644 --- a/lib/tzinfo/data_sources/ruby_data_source.rb +++ b/lib/tzinfo/data_sources/ruby_data_source.rb @@ -64,9 +64,9 @@ def initialize require_index('timezones') require_index('countries') - require_data_amagi('customtimezone') + require_data_amagi('timezone') - @data_timezone_identifiers = Data::Indexes::Timezones.data_timezones + Amagi::Customtimezone.data_timezones + @data_timezone_identifiers = Data::Indexes::Timezones.data_timezones + Amagi::Timezone.data_timezones @linked_timezone_identifiers = Data::Indexes::Timezones.linked_timezones @countries = Data::Indexes::Countries.countries @country_codes = @countries.keys.sort!.freeze @@ -101,7 +101,7 @@ def load_timezone_info(identifier) begin if split_identifier == ["Amagi"] require_definition_amagi("Amagi") - n = Amagi::Definitionamagitimezone + n = Amagi::Definition split_identifier.each {|part| n = n.const_get(part) } n.get else @@ -132,7 +132,7 @@ def require_definition(identifier) end def require_definition_amagi(identifier) - require_data_amagi('defintionamagitimezone', *identifier) + require_data_amagi('defintion', *identifier) end # Requires an index by its name. From 84a369f2ea428c561386ad35158fbe03ddc8a926 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Wed, 31 Jan 2024 10:18:30 +0530 Subject: [PATCH 04/13] change the ENV value to integer --- lib/tzinfo/amagi/definition/Amagi.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tzinfo/amagi/definition/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb index 2b927692..779630b5 100644 --- a/lib/tzinfo/amagi/definition/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -6,7 +6,7 @@ module Amagi d = Date.current d = Date.parse(ENV["AMAGI_DST_DATE"]) if ENV["AMAGI_DST_DATE"] switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " 08:30:00").to_i - adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? ENV["AMAGI_DST_SWITCH_OFFSET"] : 23400 + adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : 23400 timezone 'Amagi' do |tz| tz.offset :o0, 19800, 0, :AST tz.offset :o1, adst_offset, 0, :ADST From d5b477ba567dea9731aa878f430702740842cdac Mon Sep 17 00:00:00 2001 From: samarth23b Date: Wed, 31 Jan 2024 17:40:05 +0530 Subject: [PATCH 05/13] add config for initial offset --- lib/tzinfo/amagi/definition/Amagi.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/tzinfo/amagi/definition/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb index 779630b5..bdd3719a 100644 --- a/lib/tzinfo/amagi/definition/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -5,10 +5,11 @@ module Amagi include TimezoneDefinition d = Date.current d = Date.parse(ENV["AMAGI_DST_DATE"]) if ENV["AMAGI_DST_DATE"] - switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " 08:30:00").to_i + switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + "08:30:00").to_i adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : 23400 + initial_offset = ENV["AMAGI_DST_INITIAL_OFFSET"] ? (ENV["AMAGI_DST_INITIAL_OFFSET"]).to_i : 19800 timezone 'Amagi' do |tz| - tz.offset :o0, 19800, 0, :AST + tz.offset :o0, initial_offset, 0, :AST tz.offset :o1, adst_offset, 0, :ADST tz.transition d.year, d.month, :o1, switch_over_epoch From 8011512fd72a47342e2efcc927586b7cb3e08274 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Thu, 1 Feb 2024 13:56:39 +0530 Subject: [PATCH 06/13] add constants separately --- lib/tzinfo/amagi/definition/Amagi.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lib/tzinfo/amagi/definition/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb index bdd3719a..50932da4 100644 --- a/lib/tzinfo/amagi/definition/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -2,12 +2,17 @@ module TZInfo module Amagi module Definition module Amagi + + DEFAULT_SWITCH_OVER_EPOCH = "08:30:00" + DEFAULT_ADST_OFFSET = 23400 + DEFAULT_INITIAL_OFFSET = 19800 + include TimezoneDefinition d = Date.current d = Date.parse(ENV["AMAGI_DST_DATE"]) if ENV["AMAGI_DST_DATE"] - switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + "08:30:00").to_i - adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : 23400 - initial_offset = ENV["AMAGI_DST_INITIAL_OFFSET"] ? (ENV["AMAGI_DST_INITIAL_OFFSET"]).to_i : 19800 + switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + DEFAULT_SWITCH_OVER_EPOCH).to_i + adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : DEFAULT_ADST_OFFSET + initial_offset = ENV["AMAGI_DST_INITIAL_OFFSET"] ? (ENV["AMAGI_DST_INITIAL_OFFSET"]).to_i : DEFAULT_INITIAL_OFFSET timezone 'Amagi' do |tz| tz.offset :o0, initial_offset, 0, :AST tz.offset :o1, adst_offset, 0, :ADST From 2127ba87b253b418975f8e23d4cee87db14fcea7 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Fri, 2 Feb 2024 16:04:11 +0530 Subject: [PATCH 07/13] build and push gem --- .circleci/config.yml | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml new file mode 100644 index 00000000..28ccccf7 --- /dev/null +++ b/.circleci/config.yml @@ -0,0 +1,30 @@ +tzinfo_build_and_push_gem: + working_directory: ~/tzinfo + docker: + - image: ruby:3.0 + steps: + - checkout: + + # Build gem + - run: + name: Build gem + command: | + echo "export GEM_FILE=$(gem build | sed -n "s/^.*File: \(.*\.gem\)$/\1/p")" >> $BASH_ENV + + # Push gem to ruby gems github repository + - run: + name: Push gem to github rubygems repository + command: | + export GEM_HOST_API_KEY="Bearer $GITHUB_TOKEN" + gem push ${GEM_FILE} + +workflows: + version: 2.1 + tzinfo_build_gem: + jobs: + - tzinfo_build_and_push_gem: + filters: + tags: + only: /.*/ + branches: + ignore: /.*/ From 6492d99e5e69bb039a9c730024d9beba5c5d36cf Mon Sep 17 00:00:00 2001 From: samarth23b Date: Fri, 2 Feb 2024 16:38:48 +0530 Subject: [PATCH 08/13] build and push gem --- .circleci/config.yml | 36 +++++++++++++++++++----------------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 28ccccf7..0b0285cc 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,22 +1,24 @@ -tzinfo_build_and_push_gem: - working_directory: ~/tzinfo - docker: - - image: ruby:3.0 - steps: - - checkout: +version: 2.1 +jobs: + tzinfo_build_and_push_gem: + working_directory: ~/tzinfo + docker: + - image: ruby:3.0 + steps: + - checkout: - # Build gem - - run: - name: Build gem - command: | - echo "export GEM_FILE=$(gem build | sed -n "s/^.*File: \(.*\.gem\)$/\1/p")" >> $BASH_ENV + # Build gem + - run: + name: Build gem + command: | + echo "export GEM_FILE=$(gem build | sed -n "s/^.*File: \(.*\.gem\)$/\1/p")" >> $BASH_ENV - # Push gem to ruby gems github repository - - run: - name: Push gem to github rubygems repository - command: | - export GEM_HOST_API_KEY="Bearer $GITHUB_TOKEN" - gem push ${GEM_FILE} + # Push gem to ruby gems github repository + - run: + name: Push gem to github rubygems repository + command: | + export GEM_HOST_API_KEY="Bearer $GITHUB_TOKEN" + gem push ${GEM_FILE} workflows: version: 2.1 From 8f896e458264e354050084dc3a95c94d4fee10ba Mon Sep 17 00:00:00 2001 From: samarth23b Date: Fri, 2 Feb 2024 16:43:11 +0530 Subject: [PATCH 09/13] build and push gem --- .circleci/config.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 0b0285cc..522e4d89 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,11 +1,13 @@ version: 2.1 + jobs: tzinfo_build_and_push_gem: working_directory: ~/tzinfo + resource_class: small docker: - image: ruby:3.0 steps: - - checkout: + - checkout # Build gem - run: From aee8cb3c0ce0518a03b25c92c96b7dc084c40eb3 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Fri, 2 Feb 2024 16:55:24 +0530 Subject: [PATCH 10/13] test --- .circleci/config.yml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 522e4d89..658e3d47 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,11 +1,12 @@ version: 2.1 - +orbs: + ruby: circleci/ruby@3.2 jobs: tzinfo_build_and_push_gem: working_directory: ~/tzinfo resource_class: small docker: - - image: ruby:3.0 + - image: ruby:3.2 steps: - checkout From 4d2ba63b80299b6bc6652a012a157463c4d5e9de Mon Sep 17 00:00:00 2001 From: samarth23b Date: Fri, 2 Feb 2024 17:00:20 +0530 Subject: [PATCH 11/13] test --- .circleci/config.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.circleci/config.yml b/.circleci/config.yml index 658e3d47..df16bdda 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -1,12 +1,10 @@ version: 2.1 -orbs: - ruby: circleci/ruby@3.2 jobs: tzinfo_build_and_push_gem: working_directory: ~/tzinfo resource_class: small docker: - - image: ruby:3.2 + - image: circleci/ruby:2.7 steps: - checkout From 62ef24e9cbdba7da4b11d2f2269edc9b75e0c497 Mon Sep 17 00:00:00 2001 From: samarth23b Date: Tue, 6 Feb 2024 19:02:12 +0530 Subject: [PATCH 12/13] change offset from seconds to minutes and remove config.yml --- .circleci/config.yml | 33 ---------------------------- lib/tzinfo/amagi/definition/Amagi.rb | 6 +++-- 2 files changed, 4 insertions(+), 35 deletions(-) delete mode 100644 .circleci/config.yml diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index df16bdda..00000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,33 +0,0 @@ -version: 2.1 -jobs: - tzinfo_build_and_push_gem: - working_directory: ~/tzinfo - resource_class: small - docker: - - image: circleci/ruby:2.7 - steps: - - checkout - - # Build gem - - run: - name: Build gem - command: | - echo "export GEM_FILE=$(gem build | sed -n "s/^.*File: \(.*\.gem\)$/\1/p")" >> $BASH_ENV - - # Push gem to ruby gems github repository - - run: - name: Push gem to github rubygems repository - command: | - export GEM_HOST_API_KEY="Bearer $GITHUB_TOKEN" - gem push ${GEM_FILE} - -workflows: - version: 2.1 - tzinfo_build_gem: - jobs: - - tzinfo_build_and_push_gem: - filters: - tags: - only: /.*/ - branches: - ignore: /.*/ diff --git a/lib/tzinfo/amagi/definition/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb index 50932da4..577d08c5 100644 --- a/lib/tzinfo/amagi/definition/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -4,8 +4,8 @@ module Definition module Amagi DEFAULT_SWITCH_OVER_EPOCH = "08:30:00" - DEFAULT_ADST_OFFSET = 23400 - DEFAULT_INITIAL_OFFSET = 19800 + DEFAULT_ADST_OFFSET = 390 + DEFAULT_INITIAL_OFFSET = 330 include TimezoneDefinition d = Date.current @@ -13,6 +13,8 @@ module Amagi switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + DEFAULT_SWITCH_OVER_EPOCH).to_i adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : DEFAULT_ADST_OFFSET initial_offset = ENV["AMAGI_DST_INITIAL_OFFSET"] ? (ENV["AMAGI_DST_INITIAL_OFFSET"]).to_i : DEFAULT_INITIAL_OFFSET + adst_offset = adst_offset*60 + initial_offset = initial_offset*60 timezone 'Amagi' do |tz| tz.offset :o0, initial_offset, 0, :AST tz.offset :o1, adst_offset, 0, :ADST From 25c463a5c87df2b8567c1ab6a8a495b5a1b18bbc Mon Sep 17 00:00:00 2001 From: samarth23b Date: Thu, 15 Feb 2024 09:59:35 +0530 Subject: [PATCH 13/13] support only two configurable values --- lib/tzinfo/amagi/definition/Amagi.rb | 34 +++++++++++++++++----------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/lib/tzinfo/amagi/definition/Amagi.rb b/lib/tzinfo/amagi/definition/Amagi.rb index 577d08c5..eeb9cea7 100644 --- a/lib/tzinfo/amagi/definition/Amagi.rb +++ b/lib/tzinfo/amagi/definition/Amagi.rb @@ -4,24 +4,32 @@ module Definition module Amagi DEFAULT_SWITCH_OVER_EPOCH = "08:30:00" - DEFAULT_ADST_OFFSET = 390 - DEFAULT_INITIAL_OFFSET = 330 include TimezoneDefinition - d = Date.current - d = Date.parse(ENV["AMAGI_DST_DATE"]) if ENV["AMAGI_DST_DATE"] - switch_over_epoch = ENV["AMAGI_DST_SWITCH_TIME"] ? Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + ENV["AMAGI_DST_SWITCH_TIME"] ).to_i : Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + DEFAULT_SWITCH_OVER_EPOCH).to_i - adst_offset = ENV["AMAGI_DST_SWITCH_OFFSET"] ? (ENV["AMAGI_DST_SWITCH_OFFSET"]).to_i : DEFAULT_ADST_OFFSET - initial_offset = ENV["AMAGI_DST_INITIAL_OFFSET"] ? (ENV["AMAGI_DST_INITIAL_OFFSET"]).to_i : DEFAULT_INITIAL_OFFSET - adst_offset = adst_offset*60 - initial_offset = initial_offset*60 - timezone 'Amagi' do |tz| - tz.offset :o0, initial_offset, 0, :AST - tz.offset :o1, adst_offset, 0, :ADST + switch_timezone = ENV["AMAGI_DST_SWITCH_TO"] + dst_switch_time = ENV["AMAGI_DST_SWITCH_TIME"] + parsed_date_time = DateTime.strptime(dst_switch_time, "%Y-%m-%dT%H:%M:%S") if dst_switch_time + d = dst_switch_time ? parsed_date_time.to_date : Date.current + switch_at_time = dst_switch_time ? parsed_date_time.strftime("%H:%M:%S") : DEFAULT_SWITCH_OVER_EPOCH + switch_over_epoch = Time.find_zone("UTC").parse(d.strftime("%Y-%m-%d") + " " + switch_at_time ).to_i + if switch_timezone == "AST" + timezone 'Amagi' do |tz| + tz.offset :o0, 23400, 0, :ADST + tz.offset :o1, 19800, 0, :AST - tz.transition d.year, d.month, :o1, switch_over_epoch + tz.transition d.year, d.month, :o1, switch_over_epoch + end + elsif switch_timezone == "ADST" + timezone 'Amagi' do |tz| + tz.offset :o0, 19800, 0, :AST + tz.offset :o1, 23400, 0, :ADST + + tz.transition d.year, d.month, :o1, switch_over_epoch + + end end + end end end