From 127ede23c02ab530ffbbfba511a501c023141a44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20S=C3=A9veno?= Date: Wed, 7 Dec 2022 11:22:25 +0100 Subject: [PATCH 1/3] fix dashes in elements names --- lib/mediainfo/tracks.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mediainfo/tracks.rb b/lib/mediainfo/tracks.rb index ae85bf0..5669121 100644 --- a/lib/mediainfo/tracks.rb +++ b/lib/mediainfo/tracks.rb @@ -23,7 +23,7 @@ def initialize(input = nil) track_elements = Attributes.new(track.children.select{ |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| parameter.name = standardize_element_name(parameter.name) # Turn various element names into standardized versions (Bit_rate to Bitrate) if parameter.text.include?("\n") # if it has children (extra in iphone6+_video.mov.xml) - [parameter.name, parameter.children.select { |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| [parameter.name, parameter.text]}] + [parameter.name, parameter.children.select { |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| [standardize_element_name(parameter.name), parameter.text]}] else [parameter.name, parameter.text] end @@ -68,7 +68,7 @@ def initialize(input = nil) # Standardize our Element Names ## Relies on valid YAML in lib/attribute_standardization_rules.yml def standardize_element_name(name) - self.attribute_standardization_rules[name].nil? ? name : self.attribute_standardization_rules[name] + self.attribute_standardization_rules[name].nil? ? name.gsub('-', '_') : self.attribute_standardization_rules[name] end class Attributes From efc5303c78c365aaf9e86fc7029f207fcbd25309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20S=C3=A9veno?= Date: Wed, 7 Dec 2022 11:31:49 +0100 Subject: [PATCH 2/3] more concise --- lib/mediainfo.rb | 1 + lib/mediainfo/tracks.rb | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/lib/mediainfo.rb b/lib/mediainfo.rb index 14eae9c..387aa3d 100644 --- a/lib/mediainfo.rb +++ b/lib/mediainfo.rb @@ -113,6 +113,7 @@ def self.from_uri(input) def self.set_singleton_method(object,name,parameters) # Handle parameters with invalid characters (instance_variable_set throws error) name.gsub!('.','_') if name.include?('.') ## period in name + name.gsub!('-','_') if name.include?('-') ## period in name name.downcase! # Create singleton_method object.instance_variable_set("@#{name}",parameters) diff --git a/lib/mediainfo/tracks.rb b/lib/mediainfo/tracks.rb index 5669121..ae85bf0 100644 --- a/lib/mediainfo/tracks.rb +++ b/lib/mediainfo/tracks.rb @@ -23,7 +23,7 @@ def initialize(input = nil) track_elements = Attributes.new(track.children.select{ |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| parameter.name = standardize_element_name(parameter.name) # Turn various element names into standardized versions (Bit_rate to Bitrate) if parameter.text.include?("\n") # if it has children (extra in iphone6+_video.mov.xml) - [parameter.name, parameter.children.select { |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| [standardize_element_name(parameter.name), parameter.text]}] + [parameter.name, parameter.children.select { |n| n.is_a? ::Nokogiri::XML::Element }.map{ |parameter| [parameter.name, parameter.text]}] else [parameter.name, parameter.text] end @@ -68,7 +68,7 @@ def initialize(input = nil) # Standardize our Element Names ## Relies on valid YAML in lib/attribute_standardization_rules.yml def standardize_element_name(name) - self.attribute_standardization_rules[name].nil? ? name.gsub('-', '_') : self.attribute_standardization_rules[name] + self.attribute_standardization_rules[name].nil? ? name : self.attribute_standardization_rules[name] end class Attributes From 21f0615e1af92a08df8360b0e9424019ebbef3a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20S=C3=A9veno?= Date: Thu, 6 Feb 2025 18:25:31 +0100 Subject: [PATCH 3/3] fix: avoid literal string will be frozen warnings --- lib/mediainfo.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/mediainfo.rb b/lib/mediainfo.rb index 387aa3d..098f5d0 100644 --- a/lib/mediainfo.rb +++ b/lib/mediainfo.rb @@ -112,13 +112,13 @@ def self.from_uri(input) def self.set_singleton_method(object,name,parameters) # Handle parameters with invalid characters (instance_variable_set throws error) - name.gsub!('.','_') if name.include?('.') ## period in name - name.gsub!('-','_') if name.include?('-') ## period in name - name.downcase! + method_name = name.gsub('.', '_').gsub('-', '_').downcase + # Create singleton_method - object.instance_variable_set("@#{name}",parameters) - object.define_singleton_method name do - object.instance_variable_get "@#{name}" + object.instance_variable_set("@#{method_name}",parameters) + object.define_singleton_method method_name do + object.instance_variable_get "@#{method_name}" + object.instance_variable_get "@#{method_name}" end end