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