преобразование таблицы inform7 в javascript - PullRequest
0 голосов
/ 02 июля 2018

Я пытаюсь перенести интерактивную игровую игру с Infor7 на Javascript. Большая часть синтаксиса легко конвертируется в JavaScript; некоторые из них могут быть даже оптимизированы после преобразования. Но функция «Таблица» изначально не существует в javascript, и я могу придумать много способов ее подражать. Вот как выглядит синтаксис для таблицы inform7:

Table of example table
column one    column two    column three    column four
----------    ----------    ------------    ----------
----------    ----------    ------------    ---------

When Play begins:
    Choose a blank row from Table of example table;
    now column one entry is "text";
    now column two entry is 400;
    now column three entry is true
    now column four entry is [non primitive]

Какой самый эффективный способ реализовать это в javascript?

Пожалуйста, имейте в виду, что я планирую использовать строгий режим и не хочу даже рассматривать использование сторонних фреймворков / библиотек, таких как JQuery. Только JavaScript, как определено в последних спецификациях ECMAScript.

Некоторые из моих идей:

с использованием карты:

const tables = new Map();

// to create table
tables.set("wandering monsters", [
    new Map([
        ["monster name","default"]
    ])
]);

//to get table entry
tables.get("wandering monsters")[0].get("monster name");

с использованием функции:

function table(name, row, key, val, entrylist){
    var result;
    if (table.data == undefined){
        table.data = new Map();
    };
    switch (arguments.length) {
        case 1:
            result = table.data.get(name);
            break;
        case 2:
            table.data.set(name, []);
            result = table.data.get(name);
            break;
        case 3:
            result = table.data.get(name)[row].get(key);
            break;
        case 4:
             table.data.get(name)[row].set(key, val);
             result = table.data.get(name)[row].get(key);
             break;
        case 5:
            table.data.get(name)[row] = new Map(entrylist);
            result = table.data.get(name)[row];
            break;
        default:
            result = table.data;
    };
    return result;
}

я редактирую на мобильном телефоне

...