mirror of
https://github.com/discourse/discourse.git
synced 2024-11-25 09:42:07 +08:00
DEV: Remove unused rswag script
We no longer use this script for helping generate rswag formatted docs because we can use json schema now.
This commit is contained in:
parent
f61d430566
commit
4b7b586861
|
@ -1,101 +0,0 @@
|
|||
# frozen_string_literal: true
|
||||
require 'json'
|
||||
|
||||
# This script is used for development to help document rswag api responses. It
|
||||
# takes a json response string as an input and converts it to ruby in the format
|
||||
# that rswag wants so that you can copy+paste it into the appropriate spec rather
|
||||
# than typing it by hand.
|
||||
#
|
||||
# example:
|
||||
#
|
||||
# ruby script/json_to_rswag.rb '{"success":true,"active":true,"message":"Your account is activated and ready to use.","user_id":18}'
|
||||
#
|
||||
# will output:
|
||||
#
|
||||
# schema type: :object, properties: {
|
||||
# success: { type: :boolean },
|
||||
# active: { type: :boolean },
|
||||
# message: { type: :string },
|
||||
# user_id: { type: :integer },
|
||||
# }
|
||||
|
||||
class JsonToRswag
|
||||
|
||||
def initialize
|
||||
@output = Array.new
|
||||
@output.push("schema type: :object, properties: {")
|
||||
end
|
||||
|
||||
def get_type(k, v)
|
||||
type = ""
|
||||
type = "integer" if v.is_a? Integer
|
||||
type = "number" if v.is_a? Float
|
||||
type = "object" if v.is_a? Hash
|
||||
type = "array" if v.is_a? Array
|
||||
type = "boolean" if v == true || v == false
|
||||
type = "null" if v == nil
|
||||
type = "string" if v.is_a? String
|
||||
if type == ""
|
||||
puts "Cannot determine type for:"
|
||||
puts v
|
||||
exit 1
|
||||
end
|
||||
type
|
||||
end
|
||||
|
||||
def run(h, indent)
|
||||
h.each do |k, v|
|
||||
type = get_type(k, v)
|
||||
|
||||
if type == "object"
|
||||
@output << "#{' ' * indent}#{k}: {"
|
||||
@output << "#{' ' * (indent + 2)}type: :object,"
|
||||
@output << "#{' ' * (indent + 2)}properties: {"
|
||||
run(v, indent + 4)
|
||||
@output << "#{' ' * indent}},"
|
||||
end
|
||||
|
||||
if type == "array"
|
||||
@output << "#{' ' * indent}#{k}: {"
|
||||
@output << "#{' ' * (indent + 2)}type: :array,"
|
||||
@output << "#{' ' * (indent + 2)}items: {"
|
||||
a = v.first
|
||||
if a.is_a? Hash
|
||||
@output << "#{' ' * (indent + 4)}type: :object,"
|
||||
@output << "#{' ' * (indent + 4)}properties: {"
|
||||
run(a , indent + 6)
|
||||
@output << "#{' ' * (indent + 2)}},"
|
||||
else
|
||||
@output << "#{' ' * (indent + 2)}},"
|
||||
end
|
||||
@output << "#{' ' * indent}},"
|
||||
end
|
||||
|
||||
if type == "null"
|
||||
@output << "#{' ' * indent}#{k}: { type: :string, nullable: true },"
|
||||
elsif type != "object" && type != "array"
|
||||
@output << "#{' ' * indent}#{k}: { type: :#{type} },"
|
||||
end
|
||||
end
|
||||
|
||||
@output << "#{' ' * (indent - 2)}}"
|
||||
end
|
||||
|
||||
def print
|
||||
puts @output
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
input = ARGV[0]
|
||||
|
||||
if input == nil || input == ""
|
||||
puts "Please pass in a json string."
|
||||
exit 1
|
||||
end
|
||||
|
||||
json = JSON.parse(input)
|
||||
|
||||
json_to_rswag = JsonToRswag.new
|
||||
json_to_rswag.run(json, 2)
|
||||
json_to_rswag.print
|
Loading…
Reference in New Issue
Block a user