Add common function to parse python dict

Add the common function to parse python dict representation to a puppet
hash value, to replace the same implementation maintained in a few
modules.

Change-Id: I95040c07bb4ed0daee5a97e4e1108d6b24ed0ef6
This commit is contained in:
Takashi Kajinami 2024-10-08 11:42:08 +09:00
parent e317e6a53e
commit 93d082e579
2 changed files with 23 additions and 0 deletions
lib/puppet/provider
spec/unit/provider

@ -159,4 +159,8 @@ class Puppet::Provider::Openstack < Puppet::Provider
text = text.split("\n").drop_while { |line| line !~ /^\".*\"/ }.join("\n")
return CSV.parse(text + "\n")
end
def self.parse_python_dict(text)
return JSON.parse(text.gsub(/'/, '"').gsub(/: False([,}])/,': false\1').gsub(/: True([,}])/,': true\1'))
end
end

@ -210,4 +210,23 @@ name="test"
end
end
end
describe '#parse_python_dict' do
it 'should return a hash when provided with a python dict' do
s = "{'key': 'value', 'key2': 'value2'}"
expect(Puppet::Provider::Openstack.parse_python_dict(s)).to eq({'key'=>'value', 'key2'=>'value2'})
s = "{'key': True, 'key2': 'value2'}"
expect(Puppet::Provider::Openstack.parse_python_dict(s)).to eq({'key'=>true, 'key2'=>'value2'})
s = "{'key': 'value', 'key2': True}"
expect(Puppet::Provider::Openstack.parse_python_dict(s)).to eq({'key'=>'value', 'key2'=>true})
s = "{'key': False, 'key2': 'value2'}"
expect(Puppet::Provider::Openstack.parse_python_dict(s)).to eq({'key'=>false, 'key2'=>'value2'})
s = "{'key': 'value', 'key2': False}"
expect(Puppet::Provider::Openstack.parse_python_dict(s)).to eq({'key'=>'value', 'key2'=>false})
end
end
end