module MyData::Xsd::ResourceGenerator
This class is for development reason only, to generate resources
Public Instance Methods
generate_docs()
click to toggle source
# File lib/my_data/xsd/resource_generator.rb, line 9 def generate_docs MyData::Xsd::Structure.docs.each do |name, doc| generate_file(name: name, namespace: doc.target_namespace, xsd_mode: "xsd_doc") end "done" end
generate_types()
click to toggle source
# File lib/my_data/xsd/resource_generator.rb, line 17 def generate_types MyData::Xsd::Structure.complex_types.each do |_, type| generate_file(name: type.name, namespace: type.namespace, xsd_mode: "xsd_complex_type") end "done" end
Private Instance Methods
class_string(class_name, xsd_mode)
click to toggle source
# File lib/my_data/xsd/resource_generator.rb, line 39 def class_string(class_name, xsd_mode) string = "# frozen_string_literal: true\n" string += "\n" string += "class MyData::Resources::#{class_name}\n" string += " include MyData::Resource\n" string += "\n" string += " #{xsd_mode}\n" string += "end\n" string end
generate_file(name:, namespace:, xsd_mode:)
click to toggle source
# File lib/my_data/xsd/resource_generator.rb, line 27 def generate_file(name:, namespace:, xsd_mode:) folder_name = File.join(MyData.root, "lib/my_data/resources", namespace.to_s) FileUtils.mkdir_p(folder_name) class_name = [namespace&.camelize, name.camelize].compact.join("::") puts "Create file: #{folder_name}, #{name}" file = File.new(File.join(folder_name, "#{name.underscore}.rb"), "w") file.write(class_string(class_name, xsd_mode)) file.close end