Попытка получить переменные окружения из виджета widget.system () - PullRequest
0 голосов
/ 30 марта 2011

Я пытаюсь записать некоторый Dashcode, но, похоже, не могу получить переменные окружения, когда я запускаю команду / env. Среда не создается из источника, потому что она всегда возвращает «Не определено». Ниже мой код, и я открыт для любых предложений (мне нужно больше, чем просто LANG, LANG - только пример).

var textFieldToChange = document.getElementById ("LangField"); var newFieldText = widget.system ("/ usr / bin / env | grep LANG"). outputString; textFieldToChange.value = newFieldText;

Есть ли простой способ для создания источника моей среды и ее кеширования в Dashcode или мне нужно попытаться написать что-то, что каким-то образом кеширует всю среду?

Спасибо за любые идеи!

Ответы [ 2 ]

0 голосов
/ 09 мая 2013

Я знаю, что эта ветка довольно старая, но в любом случае вопрос все еще актуален: -)

Просто начав с Dashcode и виджетов, я быстро взломал это:

function doGetEnv(event)
{
    if (window.widget)
    {
        var out = widget.system("/bin/bash -c set", null).outputString;
        document.getElementById("content").innerText = out;
    }
}

Для моего экспериментального виджета я использовал область прокрутки и кнопку.DoGetEnv (событие) запускается при нажатии, установленном через инспектор.Идентификатор «content» - это стандартное именование содержимого в области прокрутки.

В out var содержится строка с символами '\ n', для преобразования ее в массив используйте split ().

function doGetEnv(event)
{
    if (window.widget)
    {
        var out = widget.system("/bin/bash -c set", null).outputString;
        out = out.split("\n");
        document.getElementById("content").innerText = out[0];
    }
}

Первая запись "BASH ..." в моем случае.Если вы ищете определенный элемент, используйте метод соответствия STRING (см. Также http://www.w3schools.com/jsref/jsref_match.asp) вместе со следующими страницами по регулярным выражениям:

Для кэширования среды вы можете использовать:

var envCache = "";

function cacheENV()
{
    envCache = widget.system("/bin/bash -c set", null).outputString;
    envCache = envCache.split("\n");
}

Это оставит массив в envCache. Альтернатива:

function cacheENV()
{
    var envCache = widget.system("/bin/bash -c set", null).outputString;
    envCache = envCache.split("\n");
    return envCache;
}
0 голосов
/ 01 апреля 2011

Вы разрешили доступ к командной строке?Перейдите к атрибутам виджета (в левом меню), затем к расширениям и установите флажок «Разрешить доступ к командной строке», иначе виджет не сможет общаться с системой.Не уверен, что именно это является причиной проблемы.

...