Справочник JS.chm - перепаковка

Russian main discussion
Post Reply
  • Author
  • Message
Offline
Posts: 330
Joined: Mon Jun 03, 2019 2:33 am

Справочник JS.chm - перепаковка

Post by AZJIO »

Скачать JS.chm
Вытащил из сборки JS.chm и решил его перепаковать, во первых чёрную тему сделать в CSS, во вторых надоело что ссылки открываются во внутрь CHM, то есть это не браузер чтобы обрабатывать интернет-ссылки, поэтому интернет ссылки отличаются красным цветом и с помощью target="blank" открываются теперь во внешнем браузере, если захочется их кликать.
По предпочтениям если есть у кого желание иной вид, могу переделать. Например:
1. Код в примерах со шрифтом Arial, тогда как многие любят Consolas или "Courier New"
2. Цветовая тема.
3. Прочие баги


Ещё обновил текст "Подробно" подкрасил. Ньюанс, если кто запускал JS.chm с выбором страницы внутри, то я там путь поменял "files\" на "html\" мелочь но если кто уже сделал прыжок к функции в скриптах, то это перестанет работать, я могу поменять назад.

Обновление подсветки
Решил поиграться с подсветкой, делал регулярные выражение чтобы правильно подсветить код. Так как это много пошаговой работы, где неверным движением можно поломать, то сделал экспорт всех примеров, открыл в Notepad++ и сделал экспорт в HTML, далее всё импортировал обратно в страницы и сделал несколько ручных замен, так как тоже не всё подсветилось как хотелось.

Обновление для телефона
Чтобы можно было почитать на работе с телефона. Для этого добавил 3 страницы с префиксом 0_ чтобы были сверху в списке, при этом распаковав chm как архив с помощью 7zip, копируем папку "html" в телефон переименовав в "Справка JS". Первые файлы в папке являются содержанием по алфавиту и содержанием как дерево (копия _TOC.hhc).
Также ссылки на эти файлы есть на главной странице в справке

9.09.2020
Вручную перелопачивал разделы "Массивы", "Регвыры" и немного "Строки".

Сделал автозамену alert на WScript.Echo на всех страницах в рамках адаптации примеров для AkelPad.

В некоторых местах добавлял и исправлял примеры, например в сортировке массивов не было примера для двумерного массива с сортировкой по колонке. В indexOf переделал пример, в exec русифицировал пример и сделал очевидней работу.

11.09.2020
Перелопатил часть раздела "Синтаксические конструкции" (циклы, if, switch и т.д.) даже частично описание. Также в match, операторы.
Подсвечивал ключевые слова по тексту, добавлял "Возвращаемое значение", встречные ссылки if <=>switch в "См. также". Изменял формулировки в описании и в параметрах.

13.09.2020
parseFloat, parseInt, eval и другие.

15.09.2020
В разделе "Строки"

16.09.2020
Страницы содержания с текстом "Кратко-Подробно" переделал в таблицы.
Сделал автоматические замены регулярными выражениями.
Улучшил раздел Math

21.09.2020
Улучшил в разделе "Операторы".
Добавил 3 примера в "Ассоциативный массив", сделал перекрёстные ссылки с циклом и обычным массивом.
Избавился от остатков < div > старого стиля.


До кучи wsh - black.7z - тоже перепакованная справка wsh.chm, изменён только цвет в css

_____________________________________

Структура страницы тоже не нравится, нужно после имени функции делать краткое описание, параметры функций сделать таблицей, и добавить возвращаемое значение.

Offline
Posts: 330
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Ещё обновления:
Улучшил в разделе "Операторы".
Добавил 3 примера в "Ассоциативный массив", сделал перекрёстные ссылки с циклом и обычным массивом.
Избавился от остатков < div > старого стиля.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

Справки, которые вы привели, они ведь достаточно опосредовано привязаны к AP. Зачем нужна ещё одна методичка ЯП, если она вообще непонятно каким образом привязана к практическим потребностям программы?

Offline
Posts: 330
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Eskander88
Зачем нужна ещё одна методичка
Я же никого не заставляю ею пользоваться. Мне её дали как материал для изучения языка для написания скриптов. Если у тебя есть что-то лучшее я не против, зачем ты скрываешь от нас шедевр, о котором ты говоришь? Давай его, может я быстрее научусь на готовом.
А на текущей справке я вижу много несовершенств, которые требуют много времени для исправления. Отсутствуют примеры, много пробелов в описании, например на днях я узнал что можно присваивать так x=y=5, и я не нашёл описание такого присвоения, хоть и есть в одном или двух примерах. В любом языке рассказывается существующие типы данных, присвоение, области видимости, особые элементы синтаксиса языка, а тут я область видимости читаю в каком нибудь for, где сказано что i не является внутренней областью видимости for, у меня сразу вопрос, а что здесь ещё есть и область видимости? В описании функции читаю что если внутри переменная объявлена с var, то она имеет область видимости внутри функции, вот выяснили уже существование области видимости. Почему бы не сделать страницу "Область видимости переменных" и в ней описать все зависимости.
2. Я год не мог найти описание словарей, хотя в чужих скриптах я его вижу. Пока не пригождалось игнорировал, и вот решил создать страницу, оказалось я при поиске искал "ассоциированный массив", а тут он называется "ассоциативный", я думал возможно в JS используется нативный "Scripting.Dictionary", поиск этой фразы тоже ничего не дал, поэтому и стал делать свою страничку, и пока делал гуглил описание и нашёл, что он называется "ассоциативный" и что он называется тупо "Объект", то ли нажал ссылку на "Объект" в разделе "Массивы", то ли поиском "ассоциативный", но в итоге нашёл описание и добавил слово "ассоциативный" в дерево, а ссылки на "ассоциативный" добавил во всевозможные разделы, чтобы его нельзя было потерять, в "массивы", в "for...in", в "in". и на странице добавил слово "словари", "карта" и переменную map в примерах, чтобы по то этим словам его тоже нашли на вкладке "Поиск" в chm-файле.
Так что да, куча пробелов в описании и я устраняю это по мере изучения. В интернете есть описания откуда можно просто копипастить частично, что я и делаю, но опять же там онлайн справочник и он имеет синтаксис который не работает в AkelPad, возможно это новый движок или вообще другой язык, который за основу взял JS, я просто тестирую код, смотрю поведение и описываю в справке.
Кстати в описании "for...in" написано что используется для перечисления свойств. Если я использую массив или ассоциативный массив, то в моей терминологии массив содержит элементы/пункты массива, но не свойство, тем более свойство является как некий флаг объекта, как поле структуры, а так как любой объект имеет свойство, то и обращение к ним через точку аналогично как к обращению элементов массива, то получается что свойство может восприниматься как элемент, мне непонятно была где грань, как добавлять элемент массива, который одноимённый с именем свойства? В итоге я в справке использовал термин "элемент" массива взамен "свойство", а конфликт имён даже не стал расписывать, когда пойму, тогда и объяснюсь.
Так что Eskander88 давай свою идеальную методичку, чтобы я перестал мучится с этой.

Offline
Posts: 157
Joined: Thu Nov 26, 2015 8:03 pm
Location: Rostov-on-Don

Post by Eskander88 »

AZJIO, против методичек как таковых ничего не имею, просто форум посвящён AkelPad. Пытаешься и так структурировать и систематизировать огромный объём публикуемых сообщений, а если ещё люди будут здесь публиковать книги по иероглифографике, шифрованию, компьютерной радиоэлектронике..

Помнится как-то возился со js-скриптом под AP. Применил экзотическую конструкцию, а она оказывается не поддерживалась. (Сейчас уже и не помню какую, надо было записать) Вот в таком ключе методички здесь были бы кстати :wink:

Offline
Posts: 330
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

Eskander88
а если ещё люди будут здесь публиковать книги по иероглифографике, шифрованию, компьютерной радиоэлектронике..
это уже разговоры разговоров. Разве я выкладываю вещи далёкие от AkelPad? Это имеет прямое отношение к AkelPad. Каким образом из тобою перечисленных (иероглифографике, шифрованию, компьютерной радиоэлектроник) относятся к AkelPad? Я, конечно, не против поговорить, но хотелось бы чтобы было над чем задуматься, а не просто превращать диалоги в разговоры обо всём. В личку пиши такие вещи, не каждому интересно будет это перечитывать.

Вау, да ты не в курсе... Это же плаги, это же то на чём пишут скрипты AkelPad, тот же linesHideShow.js, о котором ты спрашивал в другой теме... как всё запущено. Скажу больше, если ты посмотришь список обновлений, то там один из критериев - изменение примеров кода с адаптацией под AkelPad. Если выучишь язык, то напишешь свой linesHideShow.js и не будешь спрашивать почему он не так работает как ты бы хотел, ты его сам напишешь так как ты хочешь.

Скачай мою сборку, открой любой скрипт из папки "AkelPad\AkelFiles\Plugs\Scripts" поставь курсор на ключевое слово, нажми F1, откроется справка, которую я тут выкладываю, с прыжком к описанию функции, на которой стоит курсор. Далее жмешь на вкладке контекстное меню и жмёшь "Новый рядом", создаётся файл с тем же расширением в той же папке, то есть новый скрипт, копируешь из справки любой пример в скрипт, жмёшь F5 смотришь результат работы примера.

Offline
Posts: 874
Joined: Sat Jan 16, 2010 2:03 pm

Post by opk44 »

AZJIO wrote:...Если у тебя есть что-то лучшее я не против, зачем ты скрываешь от нас шедевр, о котором ты говоришь? ...
А на текущей справке я вижу много несовершенств, которые требуют много времени для исправления. Отсутствуют примеры, много пробелов в описании, например на днях я узнал что можно присваивать так x=y=5, и я не нашёл описание такого присвоения, хоть и есть в одном или двух примерах.
...у меня сразу вопрос, а что здесь ещё есть и область видимости? В описании функции читаю что если внутри переменная объявлена с var, то она имеет область видимости внутри функции, вот выяснили уже существование области видимости. Почему бы не сделать страницу "Область видимости переменных" и в ней описать все зависимости.
...
Так что Eskander88 давай свою идеальную методичку, чтобы я перестал мучится с этой.
Извините, но как по мне, так все приведённые примеры (не стал цитировать всю "простыню") как раз и показывают базовый недостаток ВСЕХ русскоязычных пособий - их неполноту. Из экономии или ещё почему, но выбрасываются целые разделы по принципу "я художник, я так вижу". Как вводный "курс молодого бойца" использовать их можно, но для работы - категорически нет.
Способ избавиться от этого недостатка есть только один и он хорошо известен - взять документацию от разработчика.
В данном случае - ищите файл "script56.chm" (2.910.631b). Тогда не придётся удивляться ни сквозному присваиванию, ни областям видимости, ни другим вещам.
Далее ссылка (для тех кому лень поисковиком пользоваться), но предупреждаю, что ссылка на сторонний источник (на сайте Майкрософта не нахожу):
https://windows-script-documentation.so ... /download/

Offline
Posts: 330
Joined: Mon Jun 03, 2019 2:33 am

Post by AZJIO »

opk44
Спасибо! Посмотрел, но там сразу и VBScript и ActiveX это повторяет wsh.chm, который я перепаковывал тоже в шапке этой темы. Скачал, буду иметь ввиду, но лучше я буду потихоньку изучать и своими словами дополнять, потому что в "script56.chm" там кстати функции строк, математические, даты не по разделам а в общей куче.
В ActiveX есть "Scripting.Dictionary" о чём я уже видел в wsh.chm, соответственно я уже писал по этому объекту справку в рамках AutoIt3, так что не трудно будет составить примеры в рамках AkelPad. Если раньше я ещё поддерживал совместимость JS.chm справки с веб, то сейчас думаю повыкидывать что-ли оттуда описание "объектов браузера window" и начать добавлять раздел ActiveX с примерами тем же Scripting.Dictionary и файловыми объектами. Вроде будет больше пользы.

Посмотрел метод "sort" (sort Method (JScript 5.6)) в итоге та же проблема, краткость, я не вижу там ни описания ни примера как можно сортировать двумерный массив по 2-му столбцу.
как раз и показывают базовый недостаток ВСЕХ русскоязычных пособий - их неполноту. Из экономии или ещё почему, но выбрасываются целые разделы по принципу "я художник, я так вижу".
думаю что AutoIt3 я переводил лучше оригинала, так как был сильно увлечён. Но не спорю что если у человека нет времени, то нельзя его винить что он что-то повыкидывал, переведя только-то что ему нужно для работы. И всё равно это полезно на начальном этапе, так как примеры рабочие, а когда почувствовал, что выше автора перевода, то пожалуйста, можешь переходить на оригинальную справку.

Легко сделал удаление дубликатов на основе Scripting.Dictionary,

Code: Select all

oDict = new ActiveXObject("Scripting.Dictionary");
oDict.CompareMode = 1;
var i;
var str = "Привет ау привет ого ау ого ау";
var arr = str.split(' '); // получаем массив слов

for (i in arr) {
	oDict.Item(arr[i]) = null;
}

var res = (new VBArray(oDict.Keys())).toArray();
WScript.Echo(res);


Обновил JS.chm
вырезал раздел "Объект браузера window"
На вкладке указатель добавил недостающие ключевые слова синтаксиса javascript, а также русские их варианты, а также операторы.

Добавил описание объекта Scripting.Dictionary
Добавил сокращённое описание объекта Scripting.FileSystemObject
Добавил "Область видимости переменных"

Offline
Posts: 7
Joined: Mon Nov 09, 2020 1:07 am

Post subject:

Post by graybeard »

AZJIO

Что касается меня: мне очень понравилось это усилие. Не будьте растоптаны другой точкой зрения. Я тоже заглянул на Вашом сайте, ФАКТ хорашо :lol: . Мне это подходит(нашептавания).
Díky za sestavu
Post Reply