"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.RubyTargetLanguage = exports.rubyLanguageConfig = exports.rubyOptions = void 0;
const index_js_1 = require("../../RendererOptions/index.js");
const TargetLanguage_js_1 = require("../../TargetLanguage.js");
const RubyRenderer_js_1 = require("./RubyRenderer.js");
const utils_js_1 = require("./utils.js");
exports.rubyOptions = {
    justTypes: new index_js_1.BooleanOption("just-types", "Plain types only", false),
    strictness: new index_js_1.EnumOption("strictness", "Type strictness", {
        strict: utils_js_1.Strictness.Strict,
        coercible: utils_js_1.Strictness.Coercible,
        none: utils_js_1.Strictness.None,
    }, "strict"),
    namespace: new index_js_1.StringOption("namespace", "Specify a wrapping Namespace", "NAME", "", "secondary"),
};
exports.rubyLanguageConfig = {
    displayName: "Ruby",
    names: ["ruby"],
    extension: "rb",
};
class RubyTargetLanguage extends TargetLanguage_js_1.TargetLanguage {
    constructor() {
        super(exports.rubyLanguageConfig);
    }
    getOptions() {
        return exports.rubyOptions;
    }
    get supportsOptionalClassProperties() {
        return true;
    }
    get defaultIndentation() {
        return "  ";
    }
    makeRenderer(renderContext, untypedOptionValues) {
        return new RubyRenderer_js_1.RubyRenderer(this, renderContext, (0, index_js_1.getOptionValues)(exports.rubyOptions, untypedOptionValues));
    }
}
exports.RubyTargetLanguage = RubyTargetLanguage;
