From f374bc4a8cf2a725349886ba7fb61e7bf5c2d2a4 Mon Sep 17 00:00:00 2001 From: Michael Carroll Date: Thu, 9 Feb 2023 07:45:36 -0600 Subject: [PATCH] Remove ruby script Signed-off-by: Michael Carroll --- .gitignore | 1 + tools/xmlschema.rb | 302 --------------------------------------------- 2 files changed, 1 insertion(+), 302 deletions(-) delete mode 100755 tools/xmlschema.rb diff --git a/.gitignore b/.gitignore index 08e5eba3e..fe7c191e7 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ build build_* *.*.sw? .vscode +__pycache__ diff --git a/tools/xmlschema.rb b/tools/xmlschema.rb deleted file mode 100755 index cadfa59fb..000000000 --- a/tools/xmlschema.rb +++ /dev/null @@ -1,302 +0,0 @@ -#!/usr/bin/env ruby - -require "rexml/document" -require "optparse" - -$path = nil - -################################################# -# \brief A not very elegant way to convert to schema types -def xsdType(_type) - if _type == "unsigned int" - return "unsignedInt" - elsif _type == "unsigned long" - return "unsignedLog" - elsif _type == "bool" - return "boolean" - else - return _type - end -end - -################################################# -def isStdType(_type) - return _type == "string" || _type == "int" || _type == "double" || - _type == "float" || _type == "bool" || _type == "char" || - _type == "unsigned int" -end - -################################################# -def printElem(_file, _spaces, _elem) - - # this currently short-circuits the plugin.sdf copy_data element. - if _elem.attributes["name"].nil? - _file.printf("%*s\n", _spaces-2, "") - _file.printf("%*s\n", _spaces, "") - _file.printf("%*s\n", _spaces-2, "") - return - end - - type = _elem.attributes["type"] - if isStdType(type) - type = "xsd:" + xsdType(type) - end - - minOccurs = '0' - maxOccurs = 'unbounded' - if _elem.attributes["required"] == '0' - minOccurs='0' - maxOccurs='1' - elsif _elem.attributes["required"] == '1' - minOccurs='1' - maxOccurs='1' - elsif _elem.attributes["required"] == '+' - minOccurs='1' - maxOccurs='unbounded' - elsif _elem.attributes["required"] == '*' - minOccurs='0' - maxOccurs='unbounded' - end - - _file.printf("%*s\n", - _spaces, "", minOccurs, maxOccurs) - - # Print the complex type with a name - if type.nil? || type == "" - - _file.printf("%*s\n", - _spaces, "", _elem.attributes["name"]) - - if !_elem.elements["description"].nil? && - !_elem.elements["description"].text.nil? - printDocumentation(_file, _spaces+2, _elem.elements["description"].text) - end - - _file.printf("%*s\n", _spaces+2, "") - - _file.printf("%*s\n", _spaces+4, "") - - _elem.get_elements("element").each do |elem| - printElem(_file, _spaces+6, elem) - end - _file.printf("%*s\n", _spaces+4, "") - - # Print the attributes for the complex type - # Attributes must go at the end of the complex type. - _elem.get_elements("attribute").each do |attr| - printAttribute(_file, _spaces+4, attr); - end - - _file.printf("%*s\n", _spaces+2, "") - else - _file.printf("%*s\n", - _spaces, "", _elem.attributes["name"], type) - - if !_elem.elements["description"].nil? && - !_elem.elements["description"].text.nil? - printDocumentation(_file, _spaces+2, _elem.elements["description"].text) - end - end - - _file.printf("%*s\n", _spaces, "") - _file.printf("%*s\n", _spaces, "") - -end - -################################################# -def printDocumentation(_file, _spaces, _doc) - _file.printf("%*s\n", _spaces, "") - - _spaces += 2 - _file.printf("%*s\n", _spaces, "") - - _spaces += 2 - _file.printf("%*s\n",_spaces, "", _doc); - _spaces -= 2 - - _file.printf("%*s\n", _spaces, "") - _spaces -= 2 - - _file.printf("%*s\n", _spaces, "") -end - -################################################# -def printIncludeRef(_file, _spaces, _inc) - path = File.join($path, _inc.attributes["filename"]) - doc = REXML::Document.new File.new(path) - incElemName = doc.root.attributes['name'] - _file.printf("%*s\n", _spaces, "", incElemName) -end - -################################################# -def printInclude(_file, _spaces, _attr) - loc = "http://sdformat.org/schemas/" - loc += _attr.attributes['filename'].sub("\.sdf","\.xsd") - _file.printf("%*s\n", _spaces, "", loc) -end - -################################################# -def printAttribute(_file, _spaces, _attr) - name = _attr.attributes["name"] - type = _attr.attributes["type"] - use = "" - default = "" - - if !_attr.attributes["required"].nil? - if _attr.attributes["required"] == "1" - use = "use='required'" - elsif _attr.attributes["required"] == "0" - use = "use='optional'" - - # Default is only valid if use is optional - if !_attr.attributes["default"].nil? - default="default='#{_attr.attributes["default"]}'" - end - end - end - - if isStdType(type) - type = "xsd:" + xsdType(type) - end - - _file.printf("%*s\n", _spaces, - "", name, type, use, default) - - if !_attr.elements["description"].nil? && - !_attr.elements["description"].text.nil? - printDocumentation(_file, _spaces+2, _attr.elements["description"].text) - end - _file.printf("%*s\n", _spaces, "") -end - -################################################# -# \brief Print the complete schema for an element into a file. -# \param[in] _file File pointer in which to print the schema. -# \param[in] _spaces Number of spaces to prepend to each line. -# \param[in] _elem The SDF element to convert to an xml schema. -def printXSD(_file, _spaces, _elem) - - if !_elem.elements["description"].nil? && - !_elem.elements["description"].text.nil? - printDocumentation(_file, _spaces, _elem.elements["description"].text) - end - - _file.printf("%*s\n", _spaces, "") - - # Print the inclues for the complex type - # The includes must appear first - _elem.get_elements("include").each do |inc| - printInclude(_file, _spaces, inc); - end - - if _elem.get_elements("element").size > 0 || - _elem.get_elements("attribute").size > 0 || - _elem.get_elements("include").size > 0 - - # Print the complex type with a name - _file.printf("%*s\n", _spaces, "", - _elem.attributes["name"]) - _file.printf("%*s\n", _spaces+2, "") - - if _elem.attributes['name'] != "plugin" && - (_elem.get_elements("element").size > 0 || - _elem.get_elements("include").size > 0) - _file.printf("%*s\n", _spaces+4, "") - end - - # Print all the child elements - _elem.get_elements("element").each do |elem| - printElem(_file, _spaces+6, elem); - end - - # Print all the included sdf's root elements - _elem.get_elements("include").each do |inc| - printIncludeRef(_file, _spaces+6, inc); - end - if _elem.attributes['name'] != "plugin" && - (_elem.get_elements("element").size > 0 || - _elem.get_elements("include").size > 0) - _file.printf("%*s\n", _spaces+4, "") - end - - # Print the attributes for the complex type - # Attributes must go at the end of the complex type. - _elem.get_elements("attribute").each do |attr| - printAttribute(_file, _spaces+4, attr); - end - - # Close the complex type - _file.printf("%*s\n", _spaces+2, "") - _file.printf("%*s\n", _spaces, "") - else - type = _elem.attributes["type"] - - if isStdType(type) - type = "xsd:" + type - end - - if !type.nil? - type = "type='" + type + "'" - end - - _file.printf("%*s\n", _spaces, "", - _elem.attributes["name"], type) - end -end - - -infile = nil -outdir = nil - -opt_parser = OptionParser.new do |o| - o.on("-i", "--in [path]", String, - "SDF file to compile") {|path| infile = path} - o.on("-o", "--out [path]", String, - "Output directory for source and header files") {|path| outdir = path} - o.on("-s", "--sdf [path]", String, - "Directory containing all the SDF files") {|path| $path = path} - o.on("-h", "--help", "Display this help message") do - puts opt_parser - exit - end -end -opt_parser.parse! - -if infile.nil? - puts "Missing option -i." - exit -elsif !File.exist?(infile) - puts "Input file[#{infile}] does not exist\n" - exit -end - -if $path.nil? - puts "Missing option -s." - exit -elsif !Dir.exist?($path) - puts "SDF source dir[#{$path}] does not exist\n" - exit -end - -if outdir.nil? - puts "Missing output directory, option -o." - exit -elsif !Dir.exist?(outdir) - Dir.mkdir(outdir) -end - -doc = REXML::Document.new File.new(infile) - -spaces = 2 -doc.elements.each_with_index("element") do |elem, i| - out_xsd = infile.split("/").last.sub("\.sdf","\.xsd") - file = File.open(File.join(outdir, out_xsd), "w") - - file.print("\n") - file.print("\n") - - printXSD(file, spaces, elem) - - file.print("\n") - file.close() -end