Sha256: e6e8d30dbb8531d80d2f4ae40fc01d0a9eea853322093cdde66c469747f79cf8

Contents?: true

Size: 1.16 KB

Versions: 20

Compression:

Stored size: 1.16 KB

Contents

#!/usr/bin/env ruby

require 'xmlsimple'
require 'yaml'
require 'fileutils'

$LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')

require 'soaspec'

include Soaspec::ExeHelpers

default_output_file = 'output.yml'

# For all keys in a Hash, convert Camelcase to underscore separated
def convert_hash_keys(value)
  case value
  when Array
    value.map { |v| convert_hash_keys(v) }
  when Hash
    Hash[value.map { |k, v| [k.snakecase, convert_hash_keys(v)] }]
  else
    value
  end
end

# Remove arrays created as another string
def clean_up_yaml(yaml_string)
  yaml_string = yaml_string.gsub(/\R+(\s*)-/, '').gsub(/{}/, "''") # Remove arrays, {} -> ''
  # Insert new line where there are 2 ':' on 1 line. Issue from first gsub
  yaml_string.gsub(/:(\s)(\w*):/) { |s| s.insert(1, "\n") }
end

if ARGV[0]
  warn "Using '#{default_output_file}' as default output file since no 2nd argument passed" unless ARGV[1]
  hash = XmlSimple.xml_in(ARGV[0])
  converted = convert_hash_keys hash
  yaml_file = clean_up_yaml(converted.to_yaml)
  create_file(filename: ARGV[1] || default_output_file, content: yaml_file)
else
  puts 'usage: xml_to_yaml_file [input.xml] [output.yml] '
end

Version data entries

20 entries across 20 versions & 1 rubygems

Version Path
soaspec-0.2.29 exe/xml_to_yaml_file
soaspec-0.2.28 exe/xml_to_yaml_file
soaspec-0.2.27 exe/xml_to_yaml_file
soaspec-0.2.26 exe/xml_to_yaml_file
soaspec-0.2.25 exe/xml_to_yaml_file
soaspec-0.2.23 exe/xml_to_yaml_file
soaspec-0.2.22 exe/xml_to_yaml_file
soaspec-0.2.21 exe/xml_to_yaml_file
soaspec-0.2.20 exe/xml_to_yaml_file
soaspec-0.2.19 exe/xml_to_yaml_file
soaspec-0.2.18 exe/xml_to_yaml_file
soaspec-0.2.17 exe/xml_to_yaml_file
soaspec-0.2.16 exe/xml_to_yaml_file
soaspec-0.2.15 exe/xml_to_yaml_file
soaspec-0.2.14 exe/xml_to_yaml_file
soaspec-0.2.13 exe/xml_to_yaml_file
soaspec-0.2.12 exe/xml_to_yaml_file
soaspec-0.2.11 exe/xml_to_yaml_file
soaspec-0.2.10 exe/xml_to_yaml_file
soaspec-0.2.9 exe/xml_to_yaml_file