From d56602a0b4e3583feacea4f07f54f68d7d90ebfb Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Sat, 11 Jul 2026 11:21:52 +0300 Subject: [PATCH 1/4] #577: Rescue PMP type conversion errors with Fbe::Error --- lib/fbe/pmp.rb | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/lib/fbe/pmp.rb b/lib/fbe/pmp.rb index 6b5278bf..a0b1d076 100644 --- a/lib/fbe/pmp.rb +++ b/lib/fbe/pmp.rb @@ -70,7 +70,7 @@ def initialize(value, default, type, memo) define_method(:areas) do xml.xpath('/pmp/area/@name').map(&:value) end - others do |*args1| + others do |*args1| # rubocop:disable Metrics/BlockLength area = args1.first.to_s node = xml.at_xpath("/pmp/area[@name='#{area}']") if node.nil? @@ -101,20 +101,30 @@ def initialize(value, default, type, memo) type = prop.at_xpath('type').text memo = prop.at_xpath('memo').text default = - case type - when 'int' then Integer(default, 10) - when 'float' then Float(default) - when 'bool' then default == 'true' - else default + begin + case type + when 'int' then Integer(default, 10) + when 'float' then Float(default) + when 'bool' then default == 'true' + else default + end + rescue ArgumentError, TypeError => e + msg = "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}" + raise(Fbe::Error, msg) end end result ||= default result = - case type - when 'int' then Integer(Float(result).truncate) - when 'float' then Float(result) - when 'bool' then result.to_s == 'true' - else result + begin + case type + when 'int' then Integer(Float(result).truncate) + when 'float' then Float(result) + when 'bool' then result.to_s == 'true' + else result + end + rescue ArgumentError, TypeError => e + msg = "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}" + raise(Fbe::Error, msg) end pmpv.new(result, default, type, memo) end From 06715b6301e6788d6fc760e7cb97eb15559621dd Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Fri, 17 Jul 2026 10:05:49 +0300 Subject: [PATCH 2/4] #577: Inline msg var per review --- lib/fbe/pmp.rb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/fbe/pmp.rb b/lib/fbe/pmp.rb index a0b1d076..770fe987 100644 --- a/lib/fbe/pmp.rb +++ b/lib/fbe/pmp.rb @@ -109,8 +109,7 @@ def initialize(value, default, type, memo) else default end rescue ArgumentError, TypeError => e - msg = "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}" - raise(Fbe::Error, msg) + raise(Fbe::Error, "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}") end end result ||= default @@ -123,8 +122,7 @@ def initialize(value, default, type, memo) else result end rescue ArgumentError, TypeError => e - msg = "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}" - raise(Fbe::Error, msg) + raise(Fbe::Error, "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}") end pmpv.new(result, default, type, memo) end From 1e7ab38311b9675ca62d1932e3f284683dad2fcb Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Fri, 17 Jul 2026 10:07:59 +0300 Subject: [PATCH 3/4] #577: Fix Layout/LineLength --- lib/fbe/pmp.rb | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lib/fbe/pmp.rb b/lib/fbe/pmp.rb index 770fe987..c2dfa784 100644 --- a/lib/fbe/pmp.rb +++ b/lib/fbe/pmp.rb @@ -109,7 +109,8 @@ def initialize(value, default, type, memo) else default end rescue ArgumentError, TypeError => e - raise(Fbe::Error, "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}") + raise(Fbe::Error, + "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}") end end result ||= default @@ -122,7 +123,8 @@ def initialize(value, default, type, memo) else result end rescue ArgumentError, TypeError => e - raise(Fbe::Error, "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}") + raise(Fbe::Error, + "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}") end pmpv.new(result, default, type, memo) end From 294f0a5233a482ef7db9f106f52523269e57f7a0 Mon Sep 17 00:00:00 2001 From: VasilevNStas Date: Fri, 17 Jul 2026 10:10:19 +0300 Subject: [PATCH 4/4] #577: Fix Elegant/PairedBrackets and Layout/LineLength --- lib/fbe/pmp.rb | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/lib/fbe/pmp.rb b/lib/fbe/pmp.rb index c2dfa784..2fb8bfea 100644 --- a/lib/fbe/pmp.rb +++ b/lib/fbe/pmp.rb @@ -109,8 +109,11 @@ def initialize(value, default, type, memo) else default end rescue ArgumentError, TypeError => e - raise(Fbe::Error, - "Invalid default value '#{default}' for PMP property '#{param}' in area '#{area}': #{e.message}") + raise( + Fbe::Error, + "Invalid default value '#{default}' for PMP property " \ + "'#{param}' in area '#{area}': #{e.message}" + ) end end result ||= default @@ -123,8 +126,11 @@ def initialize(value, default, type, memo) else result end rescue ArgumentError, TypeError => e - raise(Fbe::Error, - "Invalid value '#{result}' for PMP property '#{param}' in area '#{area}': #{e.message}") + raise( + Fbe::Error, + "Invalid value '#{result}' for PMP property " \ + "'#{param}' in area '#{area}': #{e.message}" + ) end pmpv.new(result, default, type, memo) end