blob: b67671a24e4fa4181e109e9ebf005fdc952d9a7d [file] [view]
# Source Layout
The vast majority of the code here lives under [js/].
* [audio/]: Audio files (e.g. the bell alert).
* [bin/]: Tools for building/testing hterm.
* dist/: Builds of the hterm for integration with other projects.
* [docs/]: Documentation files.
* [etc/]: Scripts/snippets for hterm users to leverage terminal features.
* [examples/]: Example projects using hterm.
* [html/]:
* [hterm_test.html]: Run all available unittests.
* [images/]: Image files (e.g. notification icons).
* [js/]: The majority of relevant code for hterm.
* See the section below.
* [test_data/]: Various test data and helper scripts.
## JavaScript Source Layout
* Core logic
* [hterm.js]: Global inititalization, utility functions & classes.
* [hterm_screen.js]: The currently visible screen.
* [hterm_scrollport.js]: A viewport into the buffer that builds the screen.
* [hterm_terminal.js]: The central `Terminal` object.
* [hterm_terminal_io.js]: The IO object for writing data into the Terminal
from the user and the connected process.
* [hterm_vt.js]: Core processing of escape/control sequences.
* Keyboard related code
* [hterm_keyboard.js]: Central object for capturing and processing user input.
* [hterm_keyboard_bindings.js]: Helper for binding keypresses (via
keypatterns) to actions.
* [hterm_keyboard_keymap.js]: Default keyboard map (e.g. what happens when you
press X, Ctrl+X, Alt+X, etc...).
* [hterm_keyboard_keypattern.js]: Helper for matching keyboard bindings.
* [hterm_parser.js]: Simple parser for handling keyboard bindings.
* [hterm_parser_identifiers.js]: Constants for the parser code (such as
keyboard key names and actions).
* Supplementary modules
* [hterm_accessibility_reader.js]: Code related to rendering terminal output
for a screen reader.
* [hterm_contextmenu.js]: The context menu shown when right clicking.
* [hterm_options.js]: Internal runtime settings for the `Terminal` object.
* [hterm_preference_manager.js]: Manager for user preferences.
* [hterm_pubsub.js]: Helper for managing custom events.
* [hterm_text_attributes.js]: Helpers for sections of text with different
attributes (e.g. colors, bold, italics, etc...).
* [hterm_vt_character_map.js]: Code related to character map translations
([SCS]). Probably safe to ignore as it's unused by default.
* Testing related code
* [hterm_test.js]: Main unittest runner logic. Locates & runs all tests.
* `hterm_mock_*.js`: Various object mocks to simplify unittests.
* `*_tests.js`: Each module has a corresponding set of unittests. The
filename follows the convention of adding `_tests`. e.g. `hterm_tests.js`
contains the tests for `hterm.js`.
[audio/]: ../../audio/
[bin/]: ../../bin/
[docs/]: ../../docs/
[etc/]: ../../etc/
[examples/]: ../../examples/
[html/]: ../../html/
[images/]: ../../images/
[js/]: ../../js/
[test_data/]: ../../test_data/
[hterm_test.html]: ../../html/hterm_test.html
[hterm.js]: ../../js/hterm.js
[hterm_accessibility_reader.js]: ../../js/hterm_accessibility_reader.js
[hterm_accessibility_reader_tests.js]: ../../js/hterm_accessibility_reader_tests.js
[hterm_contextmenu.js]: ../../js/hterm_contextmenu.js
[hterm_contextmenu_tests.js]: ../../js/hterm_contextmenu_tests.js
[hterm_keyboard.js]: ../../js/hterm_keyboard.js
[hterm_keyboard_bindings.js]: ../../js/hterm_keyboard_bindings.js
[hterm_keyboard_keymap.js]: ../../js/hterm_keyboard_keymap.js
[hterm_keyboard_keypattern.js]: ../../js/hterm_keyboard_keypattern.js
[hterm_mock_notification.js]: ../../js/hterm_mock_notification.js
[hterm_mock_row_provider.js]: ../../js/hterm_mock_row_provider.js
[hterm_options.js]: ../../js/hterm_options.js
[hterm_parser.js]: ../../js/hterm_parser.js
[hterm_parser_identifiers.js]: ../../js/hterm_parser_identifiers.js
[hterm_parser_tests.js]: ../../js/hterm_parser_tests.js
[hterm_preference_manager.js]: ../../js/hterm_preference_manager.js
[hterm_pubsub.js]: ../../js/hterm_pubsub.js
[hterm_pubsub_tests.js]: ../../js/hterm_pubsub_tests.js
[hterm_screen.js]: ../../js/hterm_screen.js
[hterm_screen_tests.js]: ../../js/hterm_screen_tests.js
[hterm_scrollport.js]: ../../js/hterm_scrollport.js
[hterm_scrollport_tests.js]: ../../js/hterm_scrollport_tests.js
[hterm_terminal.js]: ../../js/hterm_terminal.js
[hterm_terminal_tests.js]: ../../js/hterm_terminal_tests.js
[hterm_terminal_io.js]: ../../js/hterm_terminal_io.js
[hterm_terminal_io_tests.js]: ../../js/hterm_terminal_io_tests.js
[hterm_test.js]: ../../js/hterm_test.js
[hterm_tests.js]: ../../js/hterm_tests.js
[hterm_text_attributes.js]: ../../js/hterm_text_attributes.js
[hterm_text_attributes_tests.js]: ../../js/hterm_text_attributes_tests.js
[hterm_vt_canned_tests.js]: ../../js/hterm_vt_canned_tests.js
[hterm_vt_character_map.js]: ../../js/hterm_vt_character_map.js
[hterm_vt_character_map_tests.js]: ../../js/hterm_vt_character_map_tests.js
[hterm_vt.js]: ../../js/hterm_vt.js
[hterm_vt_tests.js]: ../../js/hterm_vt_tests.js
[SCS]: ../ControlSequences.md#SCS