# Методы Console в SomonScript - Руководство по использованию

Полное справочное руководство для всех методов консоли в SomonScript.

## Таблица быстрого доступа

| JavaScript                 | SomonScript          | Таджикский   | Назначение                     |
| -------------------------- | -------------------- | ------------ | ------------------------------ |
| `console.log()`            | `чоп.сабт()`         | Сабткунӣ     | Основной вывод в консоль       |
| `console.error()`          | `чоп.хато()`         | Хато         | Сообщения об ошибках           |
| `console.warn()`           | `чоп.огоҳӣ()`        | Огоҳӣ        | Предупреждения                 |
| `console.info()`           | `чоп.маълумот()`     | Маълумот     | Информационные сообщения       |
| `console.debug()`          | `чоп.исфти()`        | Исфти        | Отладочная информация          |
| `console.assert()`         | `чоп.тасдиқ()`       | Тасдиқ       | Проверка утверждений           |
| `console.count()`          | `чоп.қайд()`         | Ҳисоб        | Счётчик вызовов                |
| `console.countReset()`     | `чоп.қайд_асл()`     | Ҳисоб асл    | Сброс счётчика                 |
| `console.time()`           | `чоп.вақт()`         | Вақт         | Начало отсчёта времени         |
| `console.timeLog()`        | `чоп.вақт_сабт()`    | Вақт сабт    | Логирование прошедшего времени |
| `console.timeEnd()`        | `чоп.вақт_охир()`    | Вақт охир    | Окончание отсчёта времени      |
| `console.table()`          | `чоп.ҷадвал()`       | Ҷадвал       | Табличный вывод                |
| `console.dir()`            | `чоп.феҳрист()`      | Феҳрист      | Перечисление свойств объекта   |
| `console.dirxml()`         | `чоп.xml_феҳрист()`  | XML феҳрист  | Структура XML/DOM              |
| `console.trace()`          | `чоп.пайҷо()`        | Пайҷо        | Трассировка стека вызовов      |
| `console.clear()`          | `чоп.полиз()`        | Полиз        | Очистка консоли                |
| `console.group()`          | `чоп.гуруҳ()`        | Гуруҳ        | Начало группы вывода           |
| `console.groupEnd()`       | `чоп.гуруҳ_охир()`   | Гуруҳ охир   | Конец группы вывода            |
| `console.groupCollapsed()` | `чоп.гуруҳ_пӯшида()` | Гуруҳ пӯшида | Свёрнутая группа вывода        |

---

## Детальные примеры использования

### 1. **Основной вывод (Basic Output)**

```somonscript
// Простое сообщение
чоп.сабт('Привет!');

// Вывод с несколькими аргументами
чоп.сабт('Имя:', 'Рефина', 'Возраст:', 25);

// Вывод объекта
тағйирёбанда человек = { имя: 'Қаҳҳор', город: 'Душанбе' };
чоп.сабт('Человек:', человек);
```

**Вывод:**

```
Привет!
Имя: Рефина Возраст: 25
Человек: { имя: 'Қаҳҳор', город: 'Душанбе' }
```

---

### 2. **Обработка ошибок (Error Handling)**

```somonscript
чоп.хато('Произошла ошибка!');
чоп.хато('Код ошибки:', 500);
```

**Вывод (красным/выделенный):**

```
Произошла ошибка!
Код ошибки: 500
```

---

### 3. **Предупреждения (Warnings)**

```somonscript
чоп.огоҳӣ('Функция устарела!');
чоп.огоҳӣ('Не используйте');
```

**Вывод (жёлтым/выделенный):**

```
Функция устарела!
Не используйте
```

---

### 4. **Информация (Information)**

```somonscript
чоп.маълумот('Программа запущена');
чоп.маълумот('Версия: 1.0.0');
```

---

### 5. **Отладочная информация (Debug Information)**

```somonscript
тағйирёбанда x = 10;
тағйирёбанда y = 20;
чоп.исфти('Значения:', { x, y });
```

---

### 6. **Проверка утверждений (Assertions)**

```somonscript
чоп.тасдиқ(2 + 2 === 4, 'Математика верна');
чоп.тасдиқ(5 > 10, 'Это неверно');
```

**Вывод:**

```
// Первое утверждение проходит (вывода нет)
// Второе утверждение не прошло:
Assertion failed: Это неверно
```

---

### 7. **Счётчик вызовов (Counting)**

```somonscript
функсия моя_функция() {
  чоп.ҳисоб('вызов');
}

моя_функция();  // вызов: 1
моя_функция();  // вызов: 2
моя_функция();  // вызов: 3

чоп.қайд_асл('вызов');  // Сброс счётчика
```

---

### 8. **Измерение времени (Timing)**

```somonscript
чоп.вақт('вычисление');

барои (тағйирёбанда i = 0; i < 1000000; i++) {
  // Операции
}

чоп.вақт_охир('вычисление');
// Вывод: вычисление: 123.45ms

// Или с промежуточным логированием
чоп.вақт('обработка');
чоп.вақт_сабт('обработка', 'Этап 1 завершён');
// Больше операций
чоп.вақт_охир('обработка');
```

---

### 9. **Табличный вывод (Table Display)**

```somonscript
тағйирёбанда люди = [
  { имя: 'Қаҳҳор', возраст: 25, город: 'Душанбе' },
  { имя: 'Рефина', возраст: 23, город: 'Худжанд' },
  { имя: 'Фоҳима', возраст: 27, город: 'Куляб' }
];

чоп.ҷадвал(люди);

// Показать только определённые столбцы
чоп.ҷадвал(люди, ['имя', 'возраст']);
```

**Вывод:**

```
┌─────────┬──────────┬─────────┬──────────┐
│ (index) │ имя      │ возраст │ город    │
├─────────┼──────────┼─────────┼──────────┤
│ 0       │ 'Қаҳҳор' │ 25      │ 'Душанбе'│
│ 1       │ 'Рефина' │ 23      │ 'Худжанд'│
│ 2       │ 'Фоҳима' │ 27      │ 'Куляб'  │
└─────────┴──────────┴─────────┴──────────┘
```

---

### 10. **Инспекция объектов (Object Inspection)**

```somonscript
тағйирёбанда объект = {
  x: 10,
  y: 20,
  z: { a: 1, b: 2 }
};

// Список всех свойств
чоп.феҳрист(объект);

// Для элементов DOM (если поддерживается)
// чоп.xml_феҳрист(document.body);
```

---

### 11. **Трассировка стека (Stack Trace)**

```somonscript
функсия уровень_первый() {
  уровень_второй();
}

функсия уровень_второй() {
  уровень_третий();
}

функсия уровень_третий() {
  чоп.пайҷо('Стек вызовов:');
}

уровень_первый();
```

**Вывод:**

```
Стек вызовов:
  at уровень_третий (file.som:line:col)
  at уровень_второй (file.som:line:col)
  at уровень_первый (file.som:line:col)
```

---

### 12. **Группировка вывода (Grouping Output)**

```somonscript
чоп.гуруҳ('Раздел 1');
чоп.сабт('Строка 1.1');
чоп.сабт('Строка 1.2');
чоп.гуруҳ_охир();

чоп.гуруҳ_пӯшида('Раздел 2 (свёрнут)');
чоп.сабт('Строка 2.1');
чоп.сабт('Строка 2.2');
чоп.гуруҳ_охир();

чоп.сабт('Разделитель');
```

**Вывод (иерархический):**

```
▼ Раздел 1
    Строка 1.1
    Строка 1.2
▶ Раздел 2 (свёрнут)
Разделитель
```

---

### 13. **Очистка консоли (Clearing Console)**

```somonscript
чоп.сабт('Первый текст');
чоп.сабт('Второй текст');

чоп.полиз();  // Очистить весь вывод

чоп.сабт('Новый текст (после очистки)');
```

---

## Полный пример (Complete Example)

```somonscript
функсия обработать_веб_запрос(URL) {
  чоп.гуруҳ('Обработка: ' + URL);
  чоп.вақт('запрос');

  // Логирование информации
  чоп.маълумот('URL: ' + URL);
  чоп.маълумот('Метод: GET');

  // Имитация запроса
  агар (URL) {
    чоп.тасдиқ(URL.дарозӣ > 0, 'URL валиден');
  } вагарна {
    чоп.хато('URL не задан');
  }

  // Отладочные значения
  тағйирёбанда результат = {
    статус: 200,
    время_ответа: '145ms',
    размер: 1024
  };

  чоп.ҷадвал(результат);
  чоп.вақт_охир('запрос');

  чоп.гуруҳ_охир();
}

обработать_веб_запрос('https://example.com');
```

---

## Примечания

- Большинство методов выводят в **stdout** (стандартный поток вывода)
- `console.error()` обычно выводит в **stderr** (поток ошибок)
- Методы, такие как `time()`, `count()`, сохраняют внутреннее состояние
- Сгруппированный вывод показывает отступы в браузерах и поддерживающих
  окружениях
- Форматирование таблиц зависит от возможностей движка JavaScript

## Смотрите также

- [API Console JavaScript](https://developer.mozilla.org/en-US/docs/Web/API/Console)
- [Документация Console Node.js](https://nodejs.org/api/console.html)
- [Примеры SomonScript](../examples)
