From 3c0a071916dc708255d2e9b19c5a6e1d515189b9 Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 17 Jun 2025 11:55:06 +0200 Subject: [PATCH 1/2] Upgrade credo for OTP-28 compatibility --- mix.exs | 2 +- mix.lock | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/mix.exs b/mix.exs index c556f58..4bb7f93 100644 --- a/mix.exs +++ b/mix.exs @@ -35,7 +35,7 @@ defmodule XlsxReader.MixProject do defp deps do [ {:saxy, "~> 1.5"}, - {:credo, "~> 1.4.0", only: [:dev, :test], runtime: false}, + {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:decimal, "~> 1.0 or ~> 2.0", optional: true}, {:dialyxir, "~> 1.0.0", only: :dev, runtime: false}, {:ex_doc, "~> 0.22", only: :dev, runtime: false}, diff --git a/mix.lock b/mix.lock index 40c648c..92d3ad7 100644 --- a/mix.lock +++ b/mix.lock @@ -1,8 +1,8 @@ %{ "benchee": {:hex, :benchee, "1.0.1", "66b211f9bfd84bd97e6d1beaddf8fc2312aaabe192f776e8931cb0c16f53a521", [:mix], [{:deep_merge, "~> 1.0", [hex: :deep_merge, repo: "hexpm", optional: false]}], "hexpm", "3ad58ae787e9c7c94dd7ceda3b587ec2c64604563e049b2a0e8baafae832addb"}, - "bunt": {:hex, :bunt, "0.2.0", "951c6e801e8b1d2cbe58ebbd3e616a869061ddadcc4863d0a2182541acae9a38", [:mix], [], "hexpm", "7af5c7e09fe1d40f76c8e4f9dd2be7cebd83909f31fee7cd0e9eadc567da8353"}, - "credo": {:hex, :credo, "1.4.0", "92339d4cbadd1e88b5ee43d427b639b68a11071b6f73854e33638e30a0ea11f5", [:mix], [{:bunt, "~> 0.2.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "1fd3b70dce216574ce3c18bdf510b57e7c4c85c2ec9cad4bff854abaf7e58658"}, - "decimal": {:hex, :decimal, "1.8.1", "a4ef3f5f3428bdbc0d35374029ffcf4ede8533536fa79896dd450168d9acdf3c", [:mix], [], "hexpm", "3cb154b00225ac687f6cbd4acc4b7960027c757a5152b369923ead9ddbca7aec"}, + "bunt": {:hex, :bunt, "1.0.0", "081c2c665f086849e6d57900292b3a161727ab40431219529f13c4ddcf3e7a44", [:mix], [], "hexpm", "dc5f86aa08a5f6fa6b8096f0735c4e76d54ae5c9fa2c143e5a1fc7c1cd9bb6b5"}, + "credo": {:hex, :credo, "1.7.12", "9e3c20463de4b5f3f23721527fcaf16722ec815e70ff6c60b86412c695d426c1", [:mix], [{:bunt, "~> 0.2.1 or ~> 1.0", [hex: :bunt, repo: "hexpm", optional: false]}, {:file_system, "~> 0.2 or ~> 1.0", [hex: :file_system, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: false]}], "hexpm", "8493d45c656c5427d9c729235b99d498bd133421f3e0a683e5c1b561471291e5"}, + "decimal": {:hex, :decimal, "2.3.0", "3ad6255aa77b4a3c4f818171b12d237500e63525c2fd056699967a3e7ea20f62", [:mix], [], "hexpm", "a4d66355cb29cb47c3cf30e71329e58361cfcb37c34235ef3bf1d7bf3773aeac"}, "deep_merge": {:hex, :deep_merge, "1.0.0", "b4aa1a0d1acac393bdf38b2291af38cb1d4a52806cf7a4906f718e1feb5ee961", [:mix], [], "hexpm", "ce708e5f094b9cd4e8f2be4f00d2f4250c4095be93f8cd6d018c753894885430"}, "dialyxir": {:hex, :dialyxir, "1.0.0", "6a1fa629f7881a9f5aaf3a78f094b2a51a0357c843871b8bc98824e7342d00a5", [:mix], [{:erlex, ">= 0.2.6", [hex: :erlex, repo: "hexpm", optional: false]}], "hexpm", "aeb06588145fac14ca08d8061a142d52753dbc2cf7f0d00fc1013f53f8654654"}, "earmark": {:hex, :earmark, "1.4.5", "62ffd3bd7722fb7a7b1ecd2419ea0b458c356e7168c1f5d65caf09b4fbdd13c8", [:mix], [], "hexpm"}, @@ -10,7 +10,8 @@ "elixlsx": {:hex, :elixlsx, "0.4.2", "37dd3ada960eb1fd32ddb8736a984787a9a22734ebb305cde0c437805938dee3", [:mix], [], "hexpm", "6e42e53f193275adeafd1252f8c07cb0dabf50da356b4d75b12a8ed8e5322733"}, "erlex": {:hex, :erlex, "0.2.6", "c7987d15e899c7a2f34f5420d2a2ea0d659682c06ac607572df55a43753aa12e", [:mix], [], "hexpm", "2ed2e25711feb44d52b17d2780eabf998452f6efda104877a3881c2f8c0c0c75"}, "ex_doc": {:hex, :ex_doc, "0.32.1", "21e40f939515373bcdc9cffe65f3b3543f05015ac6c3d01d991874129d173420", [:mix], [{:earmark_parser, "~> 1.4.39", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.1", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1", [hex: :makeup_erlang, repo: "hexpm", optional: false]}], "hexpm", "5142c9db521f106d61ff33250f779807ed2a88620e472ac95dc7d59c380113da"}, - "jason": {:hex, :jason, "1.2.0", "10043418c42d2493d0ee212d3fddd25d7ffe484380afad769a0a38795938e448", [:mix], [{:decimal, "~> 1.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "116747dbe057794c3a3e4e143b7c8390b29f634e16c78a7f59ba75bfa6852e7f"}, + "file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"}, + "jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"}, "makeup": {:hex, :makeup, "1.1.1", "fa0bc768698053b2b3869fa8a62616501ff9d11a562f3ce39580d60860c3a55e", [:mix], [{:nimble_parsec, "~> 1.2.2 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "5dc62fbdd0de44de194898b6710692490be74baa02d9d108bc29f007783b0b48"}, "makeup_elixir": {:hex, :makeup_elixir, "0.16.2", "627e84b8e8bf22e60a2579dad15067c755531fea049ae26ef1020cad58fe9578", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "41193978704763f6bbe6cc2758b84909e62984c7752b3784bd3c218bb341706b"}, "makeup_erlang": {:hex, :makeup_erlang, "0.1.1", "3fcb7f09eb9d98dc4d208f49cc955a34218fc41ff6b84df7c75b3e6e533cc65f", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "174d0809e98a4ef0b3309256cbf97101c6ec01c4ab0b23e926a9e17df2077cbb"}, From 0ba40dfddef6aa2b2399bea4bff847c25e23631f Mon Sep 17 00:00:00 2001 From: Wei Huang Date: Tue, 17 Jun 2025 11:55:38 +0200 Subject: [PATCH 2/2] Move regexes out of module attributes for OTP 28 compatibility --- lib/xlsx_reader/styles.ex | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/lib/xlsx_reader/styles.ex b/lib/xlsx_reader/styles.ex index bef868e..312550d 100644 --- a/lib/xlsx_reader/styles.ex +++ b/lib/xlsx_reader/styles.ex @@ -87,17 +87,6 @@ defmodule XlsxReader.Styles do "49" => :unsupported } - @default_supported_custom_formats [ - {"0.0%", :percentage}, - {~r/\Add?\/mm?\/yy(?:yy)\z/, :date}, - {~r/\Add?\/mm?\/yy(?:yy) hh?:mm?\z/, :date_time}, - {"yyyy-mm-dd", :date}, - {~r/\Ayyyy-mm-dd[T\s]hh?:mm:ssZ?\z/, :date_time}, - {"m/d/yyyy", :date}, - {"m/d/yyyy h:mm", :date_time}, - {"hh:mm", :time} - ] - @doc """ Guesses the type of a cell based on its style. @@ -120,11 +109,23 @@ defmodule XlsxReader.Styles do defp get_known_style(num_fmt_id), do: Map.get(@known_styles, num_fmt_id) + defp default_supported_custom_formats(), + do: [ + {"0.0%", :percentage}, + {~r/\Add?\/mm?\/yy(?:yy)\z/, :date}, + {~r/\Add?\/mm?\/yy(?:yy) hh?:mm?\z/, :date_time}, + {"yyyy-mm-dd", :date}, + {~r/\Ayyyy-mm-dd[T\s]hh?:mm:ssZ?\z/, :date_time}, + {"m/d/yyyy", :date}, + {"m/d/yyyy h:mm", :date_time}, + {"hh:mm", :time} + ] + defp get_custom_style(num_fmt_id, custom_formats, supported_custom_formats) do get_style_type_from_custom_format( num_fmt_id, custom_formats, - @default_supported_custom_formats + default_supported_custom_formats() ) || get_style_type_from_custom_format( num_fmt_id,