Как я создаю Земляничные программы Perl перетаскивания?

Вы можете сначала получить патчи, а затем отфильтровать заданный ключ, если он больше, чем в двух, и отфильтровать это значение.

function filter(source, targets) {

    function getPath(array, target) {
        return array.reduce((r, { key, children }) => {
            var temp;
            if (key === target) return r.concat(key);
            if (children) {
                temp = getPath(children, target);
                if (temp.length) return r.concat(key, temp);
            }
            return r;
        }, [])
    }

    var temp = targets.map(k => getPath(source, k));
    return targets.filter(v => !temp.some((c => a => a.includes(v) && ++c)(-1)));
}

var array = [{ key: 1, title: 'aa', children: [{ key: 2, title: 'bb', children: [{ key: 3, title: 'cc', children: [{ key: 5, title: 'ee', children: [{ key: 6, title: 'ff' }, { key: 7, title: 'gg' }, { key: 8, title: 'hh' }] }] }, { key: 4, title: 'dd', }] }] }],
    result = filter(array, [1, 2, 3, 4, 8]);

console.log(result);

12
задан brian d foy 2 April 2009 в 14:41
поделиться

3 ответа

В соответствии с Windows (протестированный с XP), можно создать .cmd файл и просто иметь его, запускает программу Perl с аргументом %1 для передавания имени файла, как будто выполняемый командной строкой.

perl c:\test.pl %1

Затем можно просто перетащить файл на .cmd файл для выполнения.

20
ответ дан 2 December 2019 в 03:49
поделиться

Eeek! Не создавайте обертку script/cmd, когда Вы не должны будете.

Войдите в свой Реестр или свое диалоговое окно File Type в Windows, и переопределите действие значения по умолчанию Perl для высказывания:

"C:\path-to-perl-folders\perl.exe" "%1" %*

Это заставит двойной щелчок по.PL запускать perl.exe с названием файла (%1), по которому дважды щелкают. % * материал (передающий любые аргументы имени файла сценарию Perl) более хитер.

Войдите в Реестр снова (действительно, это не столь страшно, как люди думают), и найдите/создайте "shellex" ключ под классом Perl и затем создайте подраздел под названием "DropHandler" со строковым значением по умолчанию "{86C86720-42A0-1069-A2E8-08002B30309D}" (по крайней мере, это - мой DropHandler в американской версии Windows XP).

Это позволяет .pl файлам (на самом деле, что-либо связанное с классом Perl) иметь обработчик отбрасываний, который говорит Проводник, что сделать, когда Вы отбрасываете файл (файлы) на .pl сценарии. В этом случае это просто означает, "запускает скрипт Perl с перемещаемым файлом (файлами) как аргументы".

Хм, я не думаю, что объяснил, что очень хорошо, но это - то, как я настроил Perl (убегающий сетевой диск) для крупной технической организации. Google для Perl и DropHandler, и необходимо смочь заставить .reg сценарий Реестра делать это для Вас.

18
ответ дан 2 December 2019 в 03:49
поделиться

Вот еще одна альтернатива «оболочке», но она требует небольшой модификации сценария perl:

  1. Переименуйте сценарий script.pl в script.cmd.
  2. Добавьте в начало файла следующее:

@SETLOCAL ENABLEEXTENSIONS
@c: \ path \ to \ perl.exe -x "% ~ f0"% *
@exit / b% ERRORLEVEL%
#! Perl
#line 6
# ... здесь продолжается сценарий perl ...

Этот сценарий запускается как любой другой пакетный файл. Первые три строки в основном вызывают Perl для самого файла CMD (% ~ f0 , который работает, только если включены расширения CMD). Параметр -x для perl.exe указывает Perl пропускать все до строки #! Perl . « #line 6 » просто помогает при отладке.

Это мое предпочтительное решение, когда я не

1
ответ дан 2 December 2019 в 03:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: