UNPKG

@amiceli/vitest-cucumber

Version:

vitest tools to use Gherkin feature in unit tests

2,491 lines (2,482 loc) 122 kB
#!/usr/bin/env node "use strict"; var __create = Object.create; var __defProp = Object.defineProperty; var __getOwnPropDesc = Object.getOwnPropertyDescriptor; var __getOwnPropNames = Object.getOwnPropertyNames; var __getProtoOf = Object.getPrototypeOf; var __hasOwnProp = Object.prototype.hasOwnProperty; var __commonJS = (cb, mod) => function __require() { return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports; }; var __copyProps = (to, from, except, desc) => { if (from && typeof from === "object" || typeof from === "function") { for (let key of __getOwnPropNames(from)) if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); } return to; }; var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps( // If the importer is in node compatibility mode or this is not an ESM // file that has been converted to a CommonJS file using a Babel- // compatible transform (i.e. "__esModule" has not been set), then set // "default" to the CommonJS "module.exports" for node compatibility. isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target, mod )); // node_modules/minimist/index.js var require_minimist = __commonJS({ "node_modules/minimist/index.js"(exports2, module2) { "use strict"; function hasKey(obj, keys) { var o = obj; keys.slice(0, -1).forEach(function(key2) { o = o[key2] || {}; }); var key = keys[keys.length - 1]; return key in o; } function isNumber(x) { if (typeof x === "number") { return true; } if (/^0x[0-9a-f]+$/i.test(x)) { return true; } return /^[-+]?(?:\d+(?:\.\d*)?|\.\d+)(e[-+]?\d+)?$/.test(x); } function isConstructorOrProto(obj, key) { return key === "constructor" && typeof obj[key] === "function" || key === "__proto__"; } module2.exports = function(args, opts) { if (!opts) { opts = {}; } var flags = { bools: {}, strings: {}, unknownFn: null }; if (typeof opts.unknown === "function") { flags.unknownFn = opts.unknown; } if (typeof opts.boolean === "boolean" && opts.boolean) { flags.allBools = true; } else { [].concat(opts.boolean).filter(Boolean).forEach(function(key2) { flags.bools[key2] = true; }); } var aliases = {}; function aliasIsBoolean(key2) { return aliases[key2].some(function(x) { return flags.bools[x]; }); } Object.keys(opts.alias || {}).forEach(function(key2) { aliases[key2] = [].concat(opts.alias[key2]); aliases[key2].forEach(function(x) { aliases[x] = [key2].concat(aliases[key2].filter(function(y) { return x !== y; })); }); }); [].concat(opts.string).filter(Boolean).forEach(function(key2) { flags.strings[key2] = true; if (aliases[key2]) { [].concat(aliases[key2]).forEach(function(k) { flags.strings[k] = true; }); } }); var defaults = opts.default || {}; var argv = { _: [] }; function argDefined(key2, arg2) { return flags.allBools && /^--[^=]+$/.test(arg2) || flags.strings[key2] || flags.bools[key2] || aliases[key2]; } function setKey(obj, keys, value2) { var o = obj; for (var i2 = 0; i2 < keys.length - 1; i2++) { var key2 = keys[i2]; if (isConstructorOrProto(o, key2)) { return; } if (o[key2] === void 0) { o[key2] = {}; } if (o[key2] === Object.prototype || o[key2] === Number.prototype || o[key2] === String.prototype) { o[key2] = {}; } if (o[key2] === Array.prototype) { o[key2] = []; } o = o[key2]; } var lastKey = keys[keys.length - 1]; if (isConstructorOrProto(o, lastKey)) { return; } if (o === Object.prototype || o === Number.prototype || o === String.prototype) { o = {}; } if (o === Array.prototype) { o = []; } if (o[lastKey] === void 0 || flags.bools[lastKey] || typeof o[lastKey] === "boolean") { o[lastKey] = value2; } else if (Array.isArray(o[lastKey])) { o[lastKey].push(value2); } else { o[lastKey] = [o[lastKey], value2]; } } function setArg(key2, val, arg2) { if (arg2 && flags.unknownFn && !argDefined(key2, arg2)) { if (flags.unknownFn(arg2) === false) { return; } } var value2 = !flags.strings[key2] && isNumber(val) ? Number(val) : val; setKey(argv, key2.split("."), value2); (aliases[key2] || []).forEach(function(x) { setKey(argv, x.split("."), value2); }); } Object.keys(flags.bools).forEach(function(key2) { setArg(key2, defaults[key2] === void 0 ? false : defaults[key2]); }); var notFlags = []; if (args.indexOf("--") !== -1) { notFlags = args.slice(args.indexOf("--") + 1); args = args.slice(0, args.indexOf("--")); } for (var i = 0; i < args.length; i++) { var arg = args[i]; var key; var next; if (/^--.+=/.test(arg)) { var m = arg.match(/^--([^=]+)=([\s\S]*)$/); key = m[1]; var value = m[2]; if (flags.bools[key]) { value = value !== "false"; } setArg(key, value, arg); } else if (/^--no-.+/.test(arg)) { key = arg.match(/^--no-(.+)/)[1]; setArg(key, false, arg); } else if (/^--.+/.test(arg)) { key = arg.match(/^--(.+)/)[1]; next = args[i + 1]; if (next !== void 0 && !/^(-|--)[^-]/.test(next) && !flags.bools[key] && !flags.allBools && (aliases[key] ? !aliasIsBoolean(key) : true)) { setArg(key, next, arg); i += 1; } else if (/^(true|false)$/.test(next)) { setArg(key, next === "true", arg); i += 1; } else { setArg(key, flags.strings[key] ? "" : true, arg); } } else if (/^-[^-]+/.test(arg)) { var letters = arg.slice(1, -1).split(""); var broken = false; for (var j = 0; j < letters.length; j++) { next = arg.slice(j + 2); if (next === "-") { setArg(letters[j], next, arg); continue; } if (/[A-Za-z]/.test(letters[j]) && next[0] === "=") { setArg(letters[j], next.slice(1), arg); broken = true; break; } if (/[A-Za-z]/.test(letters[j]) && /-?\d+(\.\d*)?(e-?\d+)?$/.test(next)) { setArg(letters[j], next, arg); broken = true; break; } if (letters[j + 1] && letters[j + 1].match(/\W/)) { setArg(letters[j], arg.slice(j + 2), arg); broken = true; break; } else { setArg(letters[j], flags.strings[letters[j]] ? "" : true, arg); } } key = arg.slice(-1)[0]; if (!broken && key !== "-") { if (args[i + 1] && !/^(-|--)[^-]/.test(args[i + 1]) && !flags.bools[key] && (aliases[key] ? !aliasIsBoolean(key) : true)) { setArg(key, args[i + 1], arg); i += 1; } else if (args[i + 1] && /^(true|false)$/.test(args[i + 1])) { setArg(key, args[i + 1] === "true", arg); i += 1; } else { setArg(key, flags.strings[key] ? "" : true, arg); } } } else { if (!flags.unknownFn || flags.unknownFn(arg) !== false) { argv._.push(flags.strings._ || !isNumber(arg) ? arg : Number(arg)); } if (opts.stopEarly) { argv._.push.apply(argv._, args.slice(i + 1)); break; } } } Object.keys(defaults).forEach(function(k) { if (!hasKey(argv, k.split("."))) { setKey(argv, k.split("."), defaults[k]); (aliases[k] || []).forEach(function(x) { setKey(argv, x.split("."), defaults[k]); }); } }); if (opts["--"]) { argv["--"] = notFlags.slice(); } else { notFlags.forEach(function(k) { argv._.push(k); }); } return argv; }; } }); // node_modules/parsecurrency/index.js var require_parsecurrency = __commonJS({ "node_modules/parsecurrency/index.js"(exports2, module2) { var currencyMatcher = /^(?:([-+]{1}) ?)?(?:([A-Z]{3}) ?)?(?:([^\d ]+?) ?)?(?:([-+]{1}) ?)?(((?:\d{1,3}([,. ’'\u00A0\u202F]))*?\d{1,})(([,.])\d{1,2})?)(?: ?([^\d]+?))??(?: ?([A-Z]{3}))?$/; var gr = /^\d{1,3}([,. ’'\u00A0\u202F]\d{3})*$/; var ind = /^\d{1,2}(,\d{2})*(,\d{3})?$/; module2.exports = function parseCurrency(priceStr) { if (!priceStr || !priceStr.match) return null; priceStr = priceStr.trim(); var match = priceStr.match(currencyMatcher); if (!match) return null; var groupSeparator = match[7] || ""; var decimalSeparator = match[9] || ""; if (groupSeparator === decimalSeparator && decimalSeparator) { return null; } var isNeg = match[1] === "-" || match[4] === "-"; var integer = isNeg ? "-" + match[6] : match[6]; if (groupSeparator && !match[6].match(gr) && !match[6].match(ind)) { return null; } var value = match[5]; if (!value) return null; if (groupSeparator) { value = value.replace(RegExp("\\" + groupSeparator, "g"), ""); } if (decimalSeparator) { value = value.replace(decimalSeparator, "."); } var numericVal = isNeg ? value * -1 : +value; if (typeof numericVal !== "number" || isNaN(numericVal)) { return null; } return { raw: priceStr, value: numericVal, integer: integer || "", decimals: match[8] || "", currency: match[2] || match[11] || "", symbol: match[3] || match[10] || "", decimalSeparator, groupSeparator, sign: match[1] || match[4] || "" }; }; } }); // scripts/cli.ts var import_minimist = __toESM(require_minimist()); // src/vitest/load-feature.ts var import_node_path = require("node:path"); // node_modules/callsites/index.js function callsites() { const _prepareStackTrace = Error.prepareStackTrace; try { let result = []; Error.prepareStackTrace = (_, callSites) => { const callSitesWithoutCurrent = callSites.slice(1); result = callSitesWithoutCurrent; return callSitesWithoutCurrent; }; new Error().stack; return result; } finally { Error.prepareStackTrace = _prepareStackTrace; } } // src/parser/readfile.ts var import_node_fs = __toESM(require("node:fs")); var import_node_readline = __toESM(require("node:readline")); // src/errors/errors.ts var VitestsCucumberError = class extends Error { constructor(message, name) { super(message); this.stack = ``; this.name = name || this.constructor.name; } }; var NotScenarioOutlineError = class extends VitestsCucumberError { constructor(scenario) { super(`${scenario.getTitle()} is not a ScenarioOutline`); } }; var IsScenarioOutlineError = class extends VitestsCucumberError { constructor(scenario) { super(`${scenario.getTitle()} is a ScenarioOutline`); } }; var BackgroundNotCalledError = class extends VitestsCucumberError { constructor(background) { super(`${background.getTitle()} was not called`); } }; var ScenarioNotCalledError = class extends VitestsCucumberError { constructor(scenario) { super(`${scenario.getTitle()} was not called`); } }; var FeatureUknowScenarioError = class extends VitestsCucumberError { constructor(feature2, scenario) { super( `${scenario.getTitle()} does not exist in ${feature2.getTitle()}` ); } }; var StepAbleUnknowStepError = class extends VitestsCucumberError { constructor(stepable, step) { super( `${stepable.getTitle()} ${step.type} ${step.details} does not exist` ); } }; var StepAbleStepExpressionError = class extends VitestsCucumberError { constructor(stepable, step) { super( [ `No step match with this expression`, ` ${stepable.getTitle()}`, ` ${step.getTitle()} \u274C` ].join(` `) ); } }; var StepAbleStepsNotCalledError = class extends VitestsCucumberError { constructor(stepable, step) { super( [ ``, ` ${stepable.getTitle()}`, ` ${step.getTitle()} \u274C` ].join(` `), `Missing steps in Scenario` ); } }; var RuleNotCalledError = class extends VitestsCucumberError { constructor(rule) { super(`${rule.getTitle()} was not called`); } }; var FeatureUknowRuleError = class extends VitestsCucumberError { constructor(feature2, rule) { super( `${rule.getTitle()} does not exist in Feature: ${feature2.name}` ); } }; var FeatureFileNotFoundError = class extends VitestsCucumberError { constructor(path) { super(`feature file ${path} does not exist`); } }; var NotAllowedBackgroundStepTypeError = class extends VitestsCucumberError { constructor(type) { super(`${type} step is not allowed in Background`); } }; var TwiceBackgroundError = class extends VitestsCucumberError { constructor() { super(`A background already exist`); } }; var BackgroundNotExistsError = class extends VitestsCucumberError { constructor(parent) { super(`${parent.getTitle()} has no background`); } }; var OnlyOneFeatureError = class extends VitestsCucumberError { constructor() { super(`Gherkin rule: only one Feature per file`); } }; var StepExpressionMatchError = class extends VitestsCucumberError { constructor(step, expression) { super(`${expression} no match with ${step.details}`); } }; var MissingFeature = class extends VitestsCucumberError { constructor(line) { super( [ `Missing Feature before add Scenario, Rule or Background`, ` ${line.trim()} \u274C` ].join("\n") ); } }; var MissingSteppableError = class extends VitestsCucumberError { constructor(line) { super( [ `Missing Scenario, ScenarioOutline or Background before add step`, ` ${line.trim()} \u274C` ].join("\n") ); } }; var MissingScnearioOutlineError = class extends VitestsCucumberError { constructor(line) { super( [ `Missing ScenarioOutline before add Examples`, ` ${line.trim()} \u274C` ].join("\n") ); } }; var MissingExamplesError = class extends VitestsCucumberError { constructor(line) { super( [`Missing Examples before add value`, ` ${line.trim()} \u274C`].join( "\n" ) ); } }; var SpokenKeywordError = class extends VitestsCucumberError { constructor(line, keywords) { super( [ `No keywords match for: ${line}`, ` Available keywords : ${keywords.join(", ")}` ].join("\n") ); } }; var ParentWithoutScenario = class extends VitestsCucumberError { constructor(feature2) { super(`${feature2.getTitle()} must have at least one scenario`); } }; var InvalidUrlParameterError = class extends VitestsCucumberError { constructor(arg) { super(`String '${arg}' was not recognized as a valid Url`); } }; var InvalidDateParameterError = class extends VitestsCucumberError { constructor(arg) { super(`String '${arg}' was not recognized as a valid Date`); } }; var InvalidCurrencyParameterError = class extends VitestsCucumberError { constructor(arg) { super(`String '${arg}' was not recognized as a valid currency`); } }; var ItemAlreadyExistsError = class extends VitestsCucumberError { constructor(parent, child) { super(`${parent.getTitle()} already has ${child.getTitle()}`); } }; var RequiredTitleError = class extends VitestsCucumberError { constructor(line, keyword) { super([`${line} \u274C`, ` ${keyword} required a title`].join("\n")); } }; // src/parser/models/step.ts var Step = class { type; details; docStrings = null; isCalled; dataTables = []; title; constructor(type, details, title) { this.details = details; this.type = type; this.isCalled = false; this.title = title || `${type}`; } getTitle() { return `${this.title} ${this.details}`; } setDocStrings(docStrings) { this.docStrings = docStrings; } matchStep(step) { return this.type === step.type && this.details === step.details; } }; // src/parser/lang/lang.json var lang_default = { af: { and: [ "* ", "En " ], background: [ "Agtergrond" ], but: [ "Maar " ], examples: [ "Voorbeelde" ], feature: [ "Funksie", "Besigheid Behoefte", "Vermo\xEB" ], given: [ "Gegewe " ], name: "Afrikaans", native: "Afrikaans", rule: [ "Regel" ], scenario: [ "Voorbeeld", "Situasie" ], scenarioOutline: [ "Situasie Uiteensetting" ], then: [ "Dan " ], when: [ "Wanneer " ] }, am: { and: [ "* ", "\u0535\u057E " ], background: [ "\u053F\u0578\u0576\u057F\u0565\u0584\u057D\u057F" ], but: [ "\u0532\u0561\u0575\u0581 " ], examples: [ "\u0555\u0580\u056B\u0576\u0561\u056F\u0576\u0565\u0580" ], feature: [ "\u0556\u0578\u0582\u0576\u056F\u0581\u056B\u0578\u0576\u0561\u056C\u0578\u0582\u0569\u0575\u0578\u0582\u0576", "\u0540\u0561\u057F\u056F\u0578\u0582\u0569\u0575\u0578\u0582\u0576" ], given: [ "\u0534\u056B\u0581\u0578\u0582\u0584 " ], name: "Armenian", native: "\u0570\u0561\u0575\u0565\u0580\u0565\u0576", rule: [ "Rule" ], scenario: [ "\u0555\u0580\u056B\u0576\u0561\u056F", "\u054D\u0581\u0565\u0576\u0561\u0580" ], scenarioOutline: [ "\u054D\u0581\u0565\u0576\u0561\u0580\u056B \u056F\u0561\u057C\u0578\u0582\u0581\u057E\u0561\u0581\u0584\u0568" ], then: [ "\u0531\u057A\u0561 " ], when: [ "\u0535\u0569\u0565 ", "\u0535\u0580\u0562 " ] }, an: { and: [ "* ", "Y ", "E " ], background: [ "Antecedents" ], but: [ "Pero " ], examples: [ "Eixemplos" ], feature: [ "Caracteristica" ], given: [ "Dau ", "Dada ", "Daus ", "Dadas " ], name: "Aragonese", native: "Aragon\xE9s", rule: [ "Rule" ], scenario: [ "Eixemplo", "Caso" ], scenarioOutline: [ "Esquema del caso" ], then: [ "Alavez ", "Allora ", "Antonces " ], when: [ "Cuan " ] }, ar: { and: [ "* ", "\u0648 " ], background: [ "\u0627\u0644\u062E\u0644\u0641\u064A\u0629" ], but: [ "\u0644\u0643\u0646 " ], examples: [ "\u0627\u0645\u062B\u0644\u0629" ], feature: [ "\u062E\u0627\u0635\u064A\u0629" ], given: [ "\u0628\u0641\u0631\u0636 " ], name: "Arabic", native: "\u0627\u0644\u0639\u0631\u0628\u064A\u0629", rule: [ "Rule" ], scenario: [ "\u0645\u062B\u0627\u0644", "\u0633\u064A\u0646\u0627\u0631\u064A\u0648" ], scenarioOutline: [ "\u0633\u064A\u0646\u0627\u0631\u064A\u0648 \u0645\u062E\u0637\u0637" ], then: [ "\u0627\u0630\u0627\u064B ", "\u062B\u0645 " ], when: [ "\u0645\u062A\u0649 ", "\u0639\u0646\u062F\u0645\u0627 " ] }, ast: { and: [ "* ", "Y ", "Ya " ], background: [ "Antecedentes" ], but: [ "Peru " ], examples: [ "Exemplos" ], feature: [ "Carauter\xEDstica" ], given: [ "D\xE1u ", "Dada ", "Daos ", "Daes " ], name: "Asturian", native: "asturianu", rule: [ "Rule" ], scenario: [ "Exemplo", "Casu" ], scenarioOutline: [ "Esbozu del casu" ], then: [ "Ent\xF3s " ], when: [ "Cuando " ] }, az: { and: [ "* ", "V\u0259 ", "H\u0259m " ], background: [ "Ke\xE7mi\u015F", "Kontekst" ], but: [ "Amma ", "Ancaq " ], examples: [ "N\xFCmun\u0259l\u0259r" ], feature: [ "\xD6z\u0259llik" ], given: [ "Tutaq ki ", "Verilir " ], name: "Azerbaijani", native: "Az\u0259rbaycanca", rule: [ "Rule" ], scenario: [ "N\xFCmun\u0259", "Ssenari" ], scenarioOutline: [ "Ssenarinin strukturu" ], then: [ "O halda " ], when: [ "\u018Fg\u0259r ", "N\u0259 vaxt ki " ] }, be: { and: [ "* ", "I ", "\u0414\u044B ", "\u0422\u0430\u043A\u0441\u0430\u043C\u0430 " ], background: [ "\u041A\u0430\u043D\u0442\u044D\u043A\u0441\u0442" ], but: [ "\u0410\u043B\u0435 ", "\u0406\u043D\u0430\u043A\u0448 " ], examples: [ "\u041F\u0440\u044B\u043A\u043B\u0430\u0434\u044B" ], feature: [ "\u0424\u0443\u043D\u043A\u0446\u044B\u044F\u043D\u0430\u043B\u044C\u043D\u0430\u0441\u0446\u044C", "\u0424\u0456\u0447\u0430" ], given: [ "\u041D\u044F\u0445\u0430\u0439 ", "\u0414\u0430\u0434\u0437\u0435\u043D\u0430 " ], name: "Belarusian", native: "\u0411\u0435\u043B\u0430\u0440\u0443\u0441\u043A\u0430\u044F", rule: [ "\u041F\u0440\u0430\u0432\u0456\u043B\u044B" ], scenario: [ "\u0421\u0446\u044D\u043D\u0430\u0440\u044B\u0439", "C\u0446\u044D\u043D\u0430\u0440" ], scenarioOutline: [ "\u0428\u0430\u0431\u043B\u043E\u043D \u0441\u0446\u044D\u043D\u0430\u0440\u044B\u044F", "\u0423\u0437\u043E\u0440 \u0441\u0446\u044D\u043D\u0430\u0440\u0430" ], then: [ "\u0422\u0430\u0434\u044B " ], when: [ "\u041A\u0430\u043B\u0456 " ] }, bg: { and: [ "* ", "\u0418 " ], background: [ "\u041F\u0440\u0435\u0434\u0438\u0441\u0442\u043E\u0440\u0438\u044F" ], but: [ "\u041D\u043E " ], examples: [ "\u041F\u0440\u0438\u043C\u0435\u0440\u0438" ], feature: [ "\u0424\u0443\u043D\u043A\u0446\u0438\u043E\u043D\u0430\u043B\u043D\u043E\u0441\u0442" ], given: [ "\u0414\u0430\u0434\u0435\u043D\u043E " ], name: "Bulgarian", native: "\u0431\u044A\u043B\u0433\u0430\u0440\u0441\u043A\u0438", rule: [ "\u041F\u0440\u0430\u0432\u0438\u043B\u043E" ], scenario: [ "\u041F\u0440\u0438\u043C\u0435\u0440", "\u0421\u0446\u0435\u043D\u0430\u0440\u0438\u0439" ], scenarioOutline: [ "\u0420\u0430\u043C\u043A\u0430 \u043D\u0430 \u0441\u0446\u0435\u043D\u0430\u0440\u0438\u0439" ], then: [ "\u0422\u043E " ], when: [ "\u041A\u043E\u0433\u0430\u0442\u043E " ] }, bm: { and: [ "* ", "Dan " ], background: [ "Latar Belakang" ], but: [ "Tetapi ", "Tapi " ], examples: [ "Contoh" ], feature: [ "Fungsi" ], given: [ "Diberi ", "Bagi " ], name: "Malay", native: "Bahasa Melayu", rule: [ "Rule" ], scenario: [ "Senario", "Situasi", "Keadaan" ], scenarioOutline: [ "Kerangka Senario", "Kerangka Situasi", "Kerangka Keadaan", "Garis Panduan Senario" ], then: [ "Maka ", "Kemudian " ], when: [ "Apabila " ] }, bs: { and: [ "* ", "I ", "A " ], background: [ "Pozadina" ], but: [ "Ali " ], examples: [ "Primjeri" ], feature: [ "Karakteristika" ], given: [ "Dato " ], name: "Bosnian", native: "Bosanski", rule: [ "Rule" ], scenario: [ "Primjer", "Scenariju", "Scenario" ], scenarioOutline: [ "Scenariju-obris", "Scenario-outline" ], then: [ "Zatim " ], when: [ "Kada " ] }, ca: { and: [ "* ", "I " ], background: [ "Rerefons", "Antecedents" ], but: [ "Per\xF2 " ], examples: [ "Exemples" ], feature: [ "Caracter\xEDstica", "Funcionalitat" ], given: [ "Donat ", "Donada ", "At\xE8s ", "Atesa " ], name: "Catalan", native: "catal\xE0", rule: [ "Rule" ], scenario: [ "Exemple", "Escenari" ], scenarioOutline: [ "Esquema de l'escenari" ], then: [ "Aleshores ", "Cal " ], when: [ "Quan " ] }, cs: { and: [ "* ", "A tak\xE9 ", "A " ], background: [ "Pozad\xED", "Kontext" ], but: [ "Ale " ], examples: [ "P\u0159\xEDklady" ], feature: [ "Po\u017Eadavek" ], given: [ "Pokud ", "Za p\u0159edpokladu " ], name: "Czech", native: "\u010Cesky", rule: [ "Pravidlo" ], scenario: [ "P\u0159\xEDklad", "Sc\xE9n\xE1\u0159" ], scenarioOutline: [ "N\xE1\u010Drt Sc\xE9n\xE1\u0159e", "Osnova sc\xE9n\xE1\u0159e" ], then: [ "Pak " ], when: [ "Kdy\u017E " ] }, "cy-GB": { and: [ "* ", "A " ], background: [ "Cefndir" ], but: [ "Ond " ], examples: [ "Enghreifftiau" ], feature: [ "Arwedd" ], given: [ "Anrhegedig a " ], name: "Welsh", native: "Cymraeg", rule: [ "Rule" ], scenario: [ "Enghraifft", "Scenario" ], scenarioOutline: [ "Scenario Amlinellol" ], then: [ "Yna " ], when: [ "Pryd " ] }, da: { and: [ "* ", "Og " ], background: [ "Baggrund" ], but: [ "Men " ], examples: [ "Eksempler" ], feature: [ "Egenskab" ], given: [ "Givet " ], name: "Danish", native: "dansk", rule: [ "Regel" ], scenario: [ "Eksempel", "Scenarie" ], scenarioOutline: [ "Abstrakt Scenario" ], then: [ "S\xE5 " ], when: [ "N\xE5r " ] }, de: { and: [ "* ", "Und " ], background: [ "Grundlage", "Hintergrund", "Voraussetzungen", "Vorbedingungen" ], but: [ "Aber " ], examples: [ "Beispiele" ], feature: [ "Funktionalit\xE4t", "Funktion" ], given: [ "Angenommen ", "Gegeben sei ", "Gegeben seien " ], name: "German", native: "Deutsch", rule: [ "Rule", "Regel" ], scenario: [ "Beispiel", "Szenario" ], scenarioOutline: [ "Szenariogrundriss", "Szenarien" ], then: [ "Dann " ], when: [ "Wenn " ] }, el: { and: [ "* ", "\u039A\u03B1\u03B9 " ], background: [ "\u03A5\u03C0\u03CC\u03B2\u03B1\u03B8\u03C1\u03BF" ], but: [ "\u0391\u03BB\u03BB\u03AC " ], examples: [ "\u03A0\u03B1\u03C1\u03B1\u03B4\u03B5\u03AF\u03B3\u03BC\u03B1\u03C4\u03B1", "\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03B1" ], feature: [ "\u0394\u03C5\u03BD\u03B1\u03C4\u03CC\u03C4\u03B7\u03C4\u03B1", "\u039B\u03B5\u03B9\u03C4\u03BF\u03C5\u03C1\u03B3\u03AF\u03B1" ], given: [ "\u0394\u03B5\u03B4\u03BF\u03BC\u03AD\u03BD\u03BF\u03C5 " ], name: "Greek", native: "\u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC", rule: [ "Rule" ], scenario: [ "\u03A0\u03B1\u03C1\u03AC\u03B4\u03B5\u03B9\u03B3\u03BC\u03B1", "\u03A3\u03B5\u03BD\u03AC\u03C1\u03B9\u03BF" ], scenarioOutline: [ "\u03A0\u03B5\u03C1\u03B9\u03B3\u03C1\u03B1\u03C6\u03AE \u03A3\u03B5\u03BD\u03B1\u03C1\u03AF\u03BF\u03C5", "\u03A0\u03B5\u03C1\u03AF\u03B3\u03C1\u03B1\u03BC\u03BC\u03B1 \u03A3\u03B5\u03BD\u03B1\u03C1\u03AF\u03BF\u03C5" ], then: [ "\u03A4\u03CC\u03C4\u03B5 " ], when: [ "\u038C\u03C4\u03B1\u03BD " ] }, em: { and: [ "* ", "\u{1F602}" ], background: [ "\u{1F4A4}" ], but: [ "\u{1F614}" ], examples: [ "\u{1F4D3}" ], feature: [ "\u{1F4DA}" ], given: [ "\u{1F610}" ], name: "Emoji", native: "\u{1F600}", rule: [ "Rule" ], scenario: [ "\u{1F952}", "\u{1F4D5}" ], scenarioOutline: [ "\u{1F4D6}" ], then: [ "\u{1F64F}" ], when: [ "\u{1F3AC}" ] }, en: { and: [ "* ", "And " ], background: [ "Background" ], but: [ "But " ], examples: [ "Examples", "Scenarios" ], feature: [ "Feature", "Business Need", "Ability" ], given: [ "Given " ], name: "English", native: "English", rule: [ "Rule" ], scenario: [ "Example", "Scenario" ], scenarioOutline: [ "Scenario Outline", "Scenario Template" ], then: [ "Then " ], when: [ "When " ] }, "en-Scouse": { and: [ "* ", "An " ], background: [ "Dis is what went down" ], but: [ "Buh " ], examples: [ "Examples" ], feature: [ "Feature" ], given: [ "Givun ", "Youse know when youse got " ], name: "Scouse", native: "Scouse", rule: [ "Rule" ], scenario: [ "The thing of it is" ], scenarioOutline: [ "Wharrimean is" ], then: [ "Dun ", "Den youse gotta " ], when: [ "Wun ", "Youse know like when " ] }, "en-au": { and: [ "* ", "Too right " ], background: [ "First off" ], but: [ "Yeah nah " ], examples: [ "You'll wanna" ], feature: [ "Pretty much" ], given: [ "Y'know " ], name: "Australian", native: "Australian", rule: [ "Rule" ], scenario: [ "Awww, look mate" ], scenarioOutline: [ "Reckon it's like" ], then: [ "But at the end of the day I reckon " ], when: [ "It's just unbelievable " ] }, "en-lol": { and: [ "* ", "AN " ], background: [ "B4" ], but: [ "BUT " ], examples: [ "EXAMPLZ" ], feature: [ "OH HAI" ], given: [ "I CAN HAZ " ], name: "LOLCAT", native: "LOLCAT", rule: [ "Rule" ], scenario: [ "MISHUN" ], scenarioOutline: [ "MISHUN SRSLY" ], then: [ "DEN " ], when: [ "WEN " ] }, "en-old": { and: [ "* ", "Ond ", "7 " ], background: [ "Aer", "\xC6r" ], but: [ "Ac " ], examples: [ "Se the", "Se \xFEe", "Se \xF0e" ], feature: [ "Hwaet", "Hw\xE6t" ], given: [ "Thurh ", "\xDEurh ", "\xD0urh " ], name: "Old English", native: "Englisc", rule: [ "Rule" ], scenario: [ "Swa" ], scenarioOutline: [ "Swa hwaer swa", "Swa hw\xE6r swa" ], then: [ "Tha ", "\xDEa ", "\xD0a ", "Tha the ", "\xDEa \xFEe ", "\xD0a \xF0e " ], when: [ "B\xE6\xFEsealf ", "B\xE6\xFEsealfa ", "B\xE6\xFEsealfe ", "Ciric\xE6w ", "Ciric\xE6we ", "Ciric\xE6wa " ] }, "en-pirate": { and: [ "* ", "Aye " ], background: [ "Yo-ho-ho" ], but: [ "Avast! " ], examples: [ "Dead men tell no tales" ], feature: [ "Ahoy matey!" ], given: [ "Gangway! " ], name: "Pirate", native: "Pirate", rule: [ "Rule" ], scenario: [ "Heave to" ], scenarioOutline: [ "Shiver me timbers" ], then: [ "Let go and haul " ], when: [ "Blimey! " ] }, "en-tx": { and: [ "Come hell or high water " ], background: [ "Lemme tell y'all a story" ], but: [ "Well now hold on, I'll you what " ], examples: [ "Now that's a story longer than a cattle drive in July" ], feature: [ "This ain\u2019t my first rodeo", "All gussied up" ], given: [ "Fixin' to ", "All git out " ], name: "Texas", native: "Texas", rule: [ "Rule " ], scenario: [ "All hat and no cattle" ], scenarioOutline: [ "Serious as a snake bite", "Busy as a hound in flea season" ], then: [ "There\u2019s no tree but bears some fruit " ], when: [ "Quick out of the chute " ] }, eo: { and: [ "* ", "Kaj " ], background: [ "Fono" ], but: [ "Sed " ], examples: [ "Ekzemploj" ], feature: [ "Trajto" ], given: [ "Donita\u0135o ", "Komence " ], name: "Esperanto", native: "Esperanto", rule: [ "Regulo" ], scenario: [ "Ekzemplo", "Scenaro", "Kazo" ], scenarioOutline: [ "Konturo de la scenaro", "Skizo", "Kazo-skizo" ], then: [ "Do " ], when: [ "Se " ] }, es: { and: [ "* ", "Y ", "E " ], background: [ "Antecedentes" ], but: [ "Pero " ], examples: [ "Ejemplos" ], feature: [ "Caracter\xEDstica", "Necesidad del negocio", "Requisito" ], given: [ "Dado ", "Dada ", "Dados ", "Dadas " ], name: "Spanish", native: "espa\xF1ol", rule: [ "Regla", "Regla de negocio" ], scenario: [ "Ejemplo", "Escenario" ], scenarioOutline: [ "Esquema del escenario" ], then: [ "Entonces " ], when: [ "Cuando " ] }, et: { and: [ "* ", "Ja " ], background: [ "Taust" ], but: [ "Kuid " ], examples: [ "Juhtumid" ], feature: [ "Omadus" ], given: [ "Eeldades " ], name: "Estonian", native: "eesti keel", rule: [ "Reegel" ], scenario: [ "Juhtum", "Stsenaarium" ], scenarioOutline: [ "Raamjuhtum", "Raamstsenaarium" ], then: [ "Siis " ], when: [ "Kui " ] }, fa: { and: [ "* ", "\u0648 " ], background: [ "\u0632\u0645\u06CC\u0646\u0647" ], but: [ "\u0627\u0645\u0627 " ], examples: [ "\u0646\u0645\u0648\u0646\u0647 \u0647\u0627" ], feature: [ "\u0648\u0650\u06CC\u0698\u06AF\u06CC" ], given: [ "\u0628\u0627 \u0641\u0631\u0636 " ], name: "Persian", native: "\u0641\u0627\u0631\u0633\u06CC", rule: [ "Rule" ], scenario: [ "\u0645\u062B\u0627\u0644", "\u0633\u0646\u0627\u0631\u06CC\u0648" ], scenarioOutline: [ "\u0627\u0644\u06AF\u0648\u06CC \u0633\u0646\u0627\u0631\u06CC\u0648" ], then: [ "\u0622\u0646\u06AF\u0627\u0647 " ], when: [ "\u0647\u0646\u06AF\u0627\u0645\u06CC " ] }, fi: { and: [ "* ", "Ja " ], background: [ "Tausta" ], but: [ "Mutta " ], examples: [ "Tapaukset" ], feature: [ "Ominaisuus" ], given: [ "Oletetaan " ], name: "Finnish", native: "suomi", rule: [ "Rule" ], scenario: [ "Tapaus" ], scenarioOutline: [ "Tapausaihio" ], then: [ "Niin " ], when: [ "Kun " ] }, fr: { and: [ "* ", "Et que ", "Et qu'", "Et " ], background: [ "Contexte" ], but: [ "Mais que ", "Mais qu'", "Mais " ], examples: [ "Exemples" ], feature: [ "Fonctionnalit\xE9" ], given: [ "Soit ", "Sachant que ", "Sachant qu'", "Sachant ", "Etant donn\xE9 que ", "Etant donn\xE9 qu'", "Etant donn\xE9 ", "Etant donn\xE9e ", "Etant donn\xE9s ", "Etant donn\xE9es ", "\xC9tant donn\xE9 que ", "\xC9tant donn\xE9 qu'", "\xC9tant donn\xE9 ", "\xC9tant donn\xE9e ", "\xC9tant donn\xE9s ", "\xC9tant donn\xE9es " ], name: "French", native: "fran\xE7ais", rule: [ "R\xE8gle" ], scenario: [ "Exemple", "Sc\xE9nario" ], scenarioOutline: [ "Plan du sc\xE9nario", "Plan du Sc\xE9nario" ], then: [ "Alors ", "Donc " ], when: [ "Quand ", "Lorsque ", "Lorsqu'" ] }, ga: { and: [ "* ", "Agus " ], background: [ "C\xFAlra" ], but: [ "Ach " ], examples: [ "Sampla\xED" ], feature: [ "Gn\xE9" ], given: [ "Cuir i gc\xE1s go ", "Cuir i gc\xE1s nach ", "Cuir i gc\xE1s gur ", "Cuir i gc\xE1s n\xE1r " ], name: "Irish", native: "Gaeilge", rule: [ "Riail" ], scenario: [ "Sampla", "C\xE1s" ], scenarioOutline: [ "C\xE1s Achomair" ], then: [ "Ansin " ], when: [ "Nuair a ", "Nuair nach ", "Nuair ba ", "Nuair n\xE1r " ] }, gj: { and: [ "* ", "\u0A85\u0AA8\u0AC7 " ], background: [ "\u0AAC\u0AC7\u0A95\u0A97\u0ACD\u0AB0\u0ABE\u0A89\u0AA8\u0ACD\u0AA1" ], but: [ "\u0AAA\u0AA3 " ], examples: [ "\u0A89\u0AA6\u0ABE\u0AB9\u0AB0\u0AA3\u0ACB" ], feature: [ "\u0AB2\u0A95\u0ACD\u0AB7\u0AA3", "\u0AB5\u0ACD\u0AAF\u0ABE\u0AAA\u0ABE\u0AB0 \u0A9C\u0AB0\u0AC2\u0AB0", "\u0A95\u0ACD\u0AB7\u0AAE\u0AA4\u0ABE" ], given: [ "\u0A86\u0AAA\u0AC7\u0AB2 \u0A9B\u0AC7 " ], name: "Gujarati", native: "\u0A97\u0AC1\u0A9C\u0AB0\u0ABE\u0AA4\u0AC0", rule: [ "\u0AA8\u0ABF\u0AAF\u0AAE" ], scenario: [ "\u0A89\u0AA6\u0ABE\u0AB9\u0AB0\u0AA3", "\u0AB8\u0ACD\u0AA5\u0ABF\u0AA4\u0ABF" ], scenarioOutline: [ "\u0AAA\u0AB0\u0ABF\u0AA6\u0ACD\u0AA6\u0AB6\u0ACD\u0AAF \u0AB0\u0AC2\u0AAA\u0AB0\u0AC7\u0A96\u0ABE", "\u0AAA\u0AB0\u0ABF\u0AA6\u0ACD\u0AA6\u0AB6\u0ACD\u0AAF \u0AA2\u0ABE\u0A82\u0A9A\u0ACB" ], then: [ "\u0AAA\u0A9B\u0AC0 " ], when: [ "\u0A95\u0ACD\u0AAF\u0ABE\u0AB0\u0AC7 " ] }, gl: { and: [ "* ", "E " ], background: [ "Contexto" ], but: [ "Mais ", "Pero " ], examples: [ "Exemplos" ], feature: [ "Caracter\xEDstica" ], given: [ "Dado ", "Dada ", "Dados ", "Dadas " ], name: "Galician", native: "galego", rule: [ "Rule" ], scenario: [ "Exemplo", "Escenario" ], scenarioOutline: [ "Esbozo do escenario" ], then: [ "Ent\xF3n ", "Logo " ], when: [ "Cando " ] }, he: { and: [ "* ", "\u05D5\u05D2\u05DD " ], background: [ "\u05E8\u05E7\u05E2" ], but: [ "\u05D0\u05D1\u05DC " ], examples: [ "\u05D3\u05D5\u05D2\u05DE\u05D0\u05D5\u05EA" ], feature: [ "\u05EA\u05DB\u05D5\u05E0\u05D4" ], given: [ "\u05D1\u05D4\u05D9\u05E0\u05EA\u05DF " ], name: "Hebrew", native: "\u05E2\u05D1\u05E8\u05D9\u05EA", rule: [ "\u05DB\u05DC\u05DC" ], scenario: [ "\u05D3\u05D5\u05D2\u05DE\u05D0", "\u05EA\u05E8\u05D7\u05D9\u05E9" ], scenarioOutline: [ "\u05EA\u05D1\u05E0\u05D9\u05EA \u05EA\u05E8\u05D7\u05D9\u05E9" ], then: [ "\u05D0\u05D6 ", "\u05D0\u05D6\u05D9 " ], when: [ "\u05DB\u05D0\u05E9\u05E8 " ] }, hi: { and: [ "* ", "\u0914\u0930 ", "\u0924\u0925\u093E " ], background: [ "\u092A\u0943\u0937\u094D\u0920\u092D\u0942\u092E\u093F" ], but: [ "\u092A\u0930 ", "\u092A\u0930\u0928\u094D\u0924\u0941 ", "\u0915\u093F\u0928\u094D\u0924\u0941 " ], examples: [ "\u0909\u0926\u093E\u0939\u0930\u0923" ], feature: [ "\u0930\u0942\u092A \u0932\u0947\u0916" ], given: [ "\u0905\u0917\u0930 ", "\u092F\u0926\u093F ", "\u091A\u0942\u0902\u0915\u093F " ], name: "Hindi", native: "\u0939\u093F\u0902\u0926\u0940", rule: [ "\u0928\u093F\u092F\u092E" ], scenario: [ "\u092A\u0930\u093F\u0926\u0943\u0936\u094D\u092F" ], scenarioOutline: [ "\u092A\u0930\u093F\u0926\u0943\u0936\u094D\u092F \u0930\u0942\u092A\u0930\u0947\u0916\u093E" ], then: [ "\u0924\u092C ", "\u0924\u0926\u093E " ], when: [ "\u091C\u092C ", "\u0915\u0926\u093E " ] }, hr: { and: [ "* ", "I " ], background: [ "Pozadina" ], but: [ "Ali " ], examples: [ "Primjeri", "Scenariji" ], feature: [ "Osobina", "Mogu\u0107nost", "Mogucnost" ], given: [ "Zadan ", "Zadani ", "Zadano ", "Ukoliko " ], name: "Croatian", native: "hrvatski", rule: [ "Rule" ], scenario: [ "Primjer", "Scenarij" ], scenarioOutline: [ "Skica", "Koncept" ], then: [ "Onda " ], when: [ "Kada ", "Kad " ] }, ht: { and: [ "* ", "Ak ", "Epi ", "E " ], background: [ "Kont\xE8ks", "Istorik" ], but: [ "Men " ], examples: [ "Egzanp" ], feature: [ "Karakteristik", "Mak", "Fonksyonalite" ], given: [ "Sipoze ", "Sipoze ke ", "Sipoze Ke " ], name: "Creole", native: "krey\xF2l", rule: [ "Rule" ], scenario: [ "Senaryo" ], scenarioOutline: [ "Plan senaryo", "Plan Senaryo", "Senaryo deskripsyon", "Senaryo Deskripsyon", "Dyagram senaryo", "Dyagram Senaryo" ], then: [ "L\xE8 sa a ", "Le sa a " ], when: [ "L\xE8 ", "Le " ] }, hu: { and: [ "* ", "\xC9s " ], background: [ "H\xE1tt\xE9r" ], but: [ "De " ], examples: [ "P\xE9ld\xE1k" ], feature: [ "Jellemz\u0151" ], given: [ "Amennyiben ", "Adott " ], name: "Hungarian", native: "magyar", rule: [ "Szab\xE1ly" ], scenario: [ "P\xE9lda", "Forgat\xF3k\xF6nyv" ], scenarioOutline: [ "Forgat\xF3k\xF6nyv v\xE1zlat" ], then: [ "Akkor " ], when: [ "Majd ", "Ha ", "Amikor " ] }, id: { and: [ "* ", "Dan " ], background: [ "Dasar", "Latar Belakang" ], but: [ "Tapi ", "Tetapi " ], examples: [ "Contoh", "Misal" ], feature: [ "Fitur" ], given: [ "Dengan ", "Diketahui ", "Diasumsikan ", "Bila ", "Jika " ], name: "Indonesian", native: "Bahasa Indonesia", rule: [ "Rule", "Aturan" ], scenario: [ "Skenario" ], scenarioOutline: [ "Skenario konsep", "Garis-Besar Skenario" ], then: [ "Maka ", "Kemudian " ], when: [ "Ketika " ] }, is: { and: [ "* ", "Og " ], background: [ "Bakgrunnur" ], but: [ "En " ], examples: [ "D\xE6mi", "Atbur\xF0ar\xE1sir" ], feature: [ "Eiginleiki" ], given: [ "Ef " ], name: "Icelandic", native: "\xCDslenska", rule: [ "Rule" ], scenario: [ "Atbur\xF0ar\xE1s" ], scenarioOutline: [ "L\xFDsing Atbur\xF0ar\xE1sar", "L\xFDsing D\xE6ma" ], then: [ "\xDE\xE1 " ], when: [ "\xDEegar " ] }, it: { and: [ "* ", "E ", "Ed " ], background: [ "Contesto" ], but: [ "Ma " ], examples: [ "Esempi" ], feature: [ "Funzionalit\xE0", "Esigenza di Business", "Abilit\xE0" ], given: [ "Dato ", "Data ", "Dati ", "Date " ], name: "Italian", native: "italiano", rule: [ "Regola" ], scenario: [ "Esempio", "Scenario" ], scenarioOutline: [ "Schema dello scenario" ], then: [ "Allora " ], when: [ "Quando " ] }, ja: { and: [ "* ", "\u4E14\u3064", "\u304B\u3064" ], background: [ "\u80CC\u666F" ], but: [ "\u7136\u3057", "\u3057\u304B\u3057", "\u4F46\u3057", "\u305F\u3060\u3057" ], examples: [ "\u4F8B", "\u30B5\u30F3\u30D7\u30EB" ], feature: [ "\u30D5\u30A3\u30FC\u30C1\u30E3", "\u6A5F\u80FD" ], given: [ "\u524D\u63D0" ], name: "Japanese", native: "\u65E5\u672C\u8A9E", rule: [ "\u30EB\u30FC\u30EB" ], scenario: [ "\u30B7\u30CA\u30EA\u30AA" ], scenarioOutline: [ "\u30B7\u30CA\u30EA\u30AA\u30A2\u30A6\u30C8\u30E9\u30A4\u30F3", "\u30B7\u30CA\u30EA\u30AA\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8", "\u30C6\u30F3\u30D7\u30EC", "\u30B7\u30CA\u30EA\u30AA\u30C6\u30F3\u30D7\u30EC" ], then: [ "\u306A\u3089\u3070" ], when: [ "\u3082\u3057" ] }, jv: { and: [ "* ", "Lan " ], background: [ "Dasar" ], but: [ "Tapi ", "Nanging ", "Ananging " ], examples: [ "Conto", "Contone" ], feature: [ "Fitur" ], given: [ "Nalika ", "Nalikaning " ], name: "Javanese", native: "Basa Jawa", rule: [ "Rule" ], scenario: [ "Skenario" ], scenarioOutline: [ "Konsep skenario" ], then: [ "Njuk ", "Banjur " ], when: [ "Manawa ", "Menawa " ] }, ka: { and: [ "* ", "\u10D3\u10D0 ", "\u10D0\u10E1\u10D4\u10D5\u10D4 " ], background: [ "\u10D9\u10DD\u10DC\u10E2\u10D4\u10E5\u10E1\u10E2\u10D8" ], but: [ "\u10DB\u10D0\u10D2\u10E0\u10D0\u10DB ", "\u10D7\u10E3\u10DB\u10EA\u10D0 " ], examples: [ "\u10DB\u10D0\u10D2\u10D0\u10DA\u10D8\u10D7\u10D4\u10D1\u10D8" ], feature: [ "\u10D7\u10D5\u10D8\u10E1\u10D4\u10D1\u10D0", "\u10DB\u10DD\u10D7\u10EE\u10DD\u10D5\u10DC\u10D0" ], given: [ "\u10DB\u10DD\u10EA\u10D4\u10DB\u10E3\u10DA\u10D8 ", "\u10DB\u10DD\u10EA\u10D4\u10DB\u10E3\u10DA\u10D8\u10D0 ", "\u10D5\u10D7\u10E5\u10D5\u10D0\u10D7 " ], name: "Georgian", native: "\u10E5\u10D0\u10E0\u10D7\u10E3\u10DA\u10D8", rule: [ "\u10EC\u10D4\u10E1\u10D8" ], scenario: [ "\u10DB\u10D0\u10D2\u10D0\u10DA\u10D8\u10D7\u10D0\u10D3", "\u10DB\u10D0\u10D2\u10D0\u10DA\u10D8\u10D7\u10D8", "\u10DB\u10D0\u10D2", "\u10E1\u10EA\u10D4\u10DC\u10D0\u10E0\u10D8" ], scenarioOutline: [ "\u10E1\u10EA\u10D4\u10DC\u10D0\u10E0\u10D8\u10E1 \u10DC\u10D8\u10DB\u10E3\u10E8\u10D8", "\u10E1\u10EA\u10D4\u10DC\u10D0\u10E0\u10D8\u10E1 \u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10D8", "\u10DC\u10D8\u10DB\u10E3\u10E8\u10D8", "\u10E8\u10D0\u10D1\u10DA\u10DD\u10DC\u10D8" ], then: [ "\u10DB\u10D0\u10E8\u10D8\u10DC " ], when: [ "\u10E0\u10DD\u10D3\u10D4\u10E1\u10D0\u10EA ", "\u10E0\u10DD\u10EA\u10D0 ", "\u10E0\u10DD\u10D2\u10DD\u10E0\u10EA \u10D9\u10D8 ", "\u10D7\u10E3 " ] }, kn: { and: [ "* ", "\u0CAE\u0CA4\u0CCD\u0CA4\u0CC1 " ], background: [ "\u0CB9\u0CBF\u0CA8\u0CCD\u0CA8\u0CC6\u0CB2\u0CC6" ], but: [ "\u0C86\u0CA6\u0CB0\u0CC6 " ], examples: [ "\u0C89\u0CA6\u0CBE\u0CB9\u0CB0\u0CA3\u0CC6\u0C97\u0CB3\u0CC1" ], feature: [ "\u0CB9\u0CC6\u0C9A\u0CCD\u0C9A\u0CB3" ], given: [ "\u0CA8\u0CBF\u0CD5\u0CA1\u0CBF\u0CA6 " ], name: "Kannada", native: "\u0C95\u0CA8\u0CCD\u0CA8\u0CA1", rule: [ "Rule" ], scenario: [ "\u0C89\u0CA6\u0CBE\u0CB9\u0CB0\u0CA3\u0CC6", "\u0C95\u0CA5\u0CBE\u0CB8\u0CBE\u0CB0\u0CBE\u0C82\u0CB6" ], scenarioOutline: [ "\u0CB5\u0CBF\u0CB5