Module: Charming
- Defined in:
- lib/charming.rb,
lib/charming/cli.rb,
lib/charming/router.rb,
lib/charming/screen.rb,
lib/charming/runtime.rb,
lib/charming/version.rb,
lib/charming/response.rb,
lib/charming/controller.rb,
lib/charming/tasks/task.rb,
lib/charming/application.rb,
lib/charming/test_helper.rb,
lib/charming/audio/player.rb,
lib/charming/audio/system.rb,
lib/charming/tasks/progress.rb,
lib/charming/generators/base.rb,
lib/charming/generators/name.rb,
lib/charming/presentation/ui.rb,
lib/charming/tasks/cancelled.rb,
lib/charming/controller/focus.rb,
lib/charming/events/key_event.rb,
lib/charming/generators/error.rb,
lib/charming/application_state.rb,
lib/charming/database/commands.rb,
lib/charming/events/task_event.rb,
lib/charming/presentation/view.rb,
lib/charming/events/focus_event.rb,
lib/charming/events/mouse_event.rb,
lib/charming/events/paste_event.rb,
lib/charming/events/timer_event.rb,
lib/charming/events/resize_event.rb,
lib/charming/presentation/layout.rb,
lib/charming/controller/rendering.rb,
lib/charming/presentation/markdown.rb,
lib/charming/presentation/ui/style.rb,
lib/charming/presentation/ui/theme.rb,
lib/charming/presentation/ui/width.rb,
lib/charming/tasks/inline_executor.rb,
lib/charming/controller/dispatching.rb,
lib/charming/presentation/component.rb,
lib/charming/presentation/templates.rb,
lib/charming/presentation/ui/border.rb,
lib/charming/presentation/ui/canvas.rb,
lib/charming/controller/action_hooks.rb,
lib/charming/tasks/threaded_executor.rb,
lib/charming/controller/class_methods.rb,
lib/charming/controller/session_state.rb,
lib/charming/generators/app_generator.rb,
lib/charming/presentation/layout/pane.rb,
lib/charming/presentation/layout/rect.rb,
lib/charming/generators/view_generator.rb,
lib/charming/internal/terminal/adapter.rb,
lib/charming/presentation/layout/split.rb,
lib/charming/controller/command_palette.rb,
lib/charming/events/task_progress_event.rb,
lib/charming/generators/model_generator.rb,
lib/charming/presentation/template_view.rb,
lib/charming/presentation/ui/ansi_codes.rb,
lib/charming/controller/focus_management.rb,
lib/charming/generators/screen_generator.rb,
lib/charming/presentation/layout/builder.rb,
lib/charming/presentation/layout/overlay.rb,
lib/charming/presentation/ui/ansi_slicer.rb,
lib/charming/presentation/components/form.rb,
lib/charming/presentation/components/list.rb,
lib/charming/presentation/components/tree.rb,
lib/charming/controller/sidebar_navigation.rb,
lib/charming/generators/app_file_generator.rb,
lib/charming/generators/database_installer.rb,
lib/charming/internal/terminal/tty_backend.rb,
lib/charming/presentation/components/audio.rb,
lib/charming/presentation/components/badge.rb,
lib/charming/presentation/components/modal.rb,
lib/charming/presentation/components/table.rb,
lib/charming/presentation/components/toast.rb,
lib/charming/presentation/ui/color_support.rb,
lib/charming/generators/component_generator.rb,
lib/charming/generators/migration_generator.rb,
lib/charming/generators/migration_timestamp.rb,
lib/charming/internal/renderer/differential.rb,
lib/charming/internal/renderer/full_repaint.rb,
lib/charming/internal/terminal/mouse_parser.rb,
lib/charming/presentation/layout/pane_style.rb,
lib/charming/presentation/markdown/renderer.rb,
lib/charming/presentation/ui/border_painter.rb,
lib/charming/generators/controller_generator.rb,
lib/charming/presentation/components/spinner.rb,
lib/charming/presentation/components/tab_bar.rb,
lib/charming/controller/component_dispatching.rb,
lib/charming/internal/terminal/key_normalizer.rb,
lib/charming/internal/terminal/memory_backend.rb,
lib/charming/presentation/components/markdown.rb,
lib/charming/presentation/components/viewport.rb,
lib/charming/presentation/components/form/note.rb,
lib/charming/presentation/components/text_area.rb,
lib/charming/presentation/layout/pane_behavior.rb,
lib/charming/presentation/layout/pane_geometry.rb,
lib/charming/presentation/layout/screen_layout.rb,
lib/charming/presentation/components/form/field.rb,
lib/charming/presentation/components/form/input.rb,
lib/charming/presentation/components/status_bar.rb,
lib/charming/presentation/components/text_input.rb,
lib/charming/presentation/markdown/style_config.rb,
lib/charming/presentation/markdown/text_wrapper.rb,
lib/charming/presentation/markdown/url_resolver.rb,
lib/charming/presentation/templates/erb_handler.rb,
lib/charming/presentation/components/breadcrumbs.rb,
lib/charming/presentation/components/empty_state.rb,
lib/charming/presentation/components/form/select.rb,
lib/charming/presentation/components/progressbar.rb,
lib/charming/presentation/components/autocomplete.rb,
lib/charming/presentation/components/error_screen.rb,
lib/charming/presentation/components/form/builder.rb,
lib/charming/presentation/components/form/confirm.rb,
lib/charming/presentation/components/help_overlay.rb,
lib/charming/presentation/markdown/render_context.rb,
lib/charming/presentation/markdown/table_renderer.rb,
lib/charming/presentation/components/form/textarea.rb,
lib/charming/presentation/components/fuzzy_matcher.rb,
lib/charming/presentation/components/command_palette.rb,
lib/charming/presentation/components/keyboard_handler.rb,
lib/charming/presentation/markdown/syntax_highlighter.rb,
lib/charming/presentation/components/multi_select_list.rb,
lib/charming/presentation/components/viewport/position.rb,
lib/charming/presentation/components/activity_indicator.rb,
lib/charming/presentation/components/viewport/line_window.rb,
lib/charming/presentation/components/command_palette_modal.rb,
lib/charming/presentation/components/viewport/content_lines.rb
Defined Under Namespace
Modules: Audio, Components, Database, Events, Generators, Internal, Layout, Markdown, Tasks, Templates, TestHelper, UI Classes: Application, ApplicationState, CLI, Component, Controller, Error, Response, Router, Runtime, Screen, TemplateView, View
Constant Summary collapse
- VERSION =
"0.2.1"
Class Method Summary collapse
-
.env ⇒ Object
The current environment, read from CHARMING_ENV (default “development”).
-
.env=(value) ⇒ Object
Overrides the environment (used by tests and the CLI).
-
.key_binding_name(name) ⇒ Object
Normalizes key declarations so ‘control+p` and `ctrl+p` resolve to the same binding.
-
.key_of(event) ⇒ Object
Returns the normalized key symbol for an event-like object — ‘event.key` when the object responds to it, otherwise `event.to_sym`.
-
.key_signature(event) ⇒ Object
Returns the key signature used for controller bindings, including modifier flags.
-
.run(application, backend: nil) ⇒ Object
Entry point for running a Charming application.
Class Method Details
.env ⇒ Object
The current environment, read from CHARMING_ENV (default “development”). Returns a StringInquirer so callers can write ‘Charming.env.test?` / `Charming.env.production?`.
31 32 33 |
# File 'lib/charming.rb', line 31 def self.env @env ||= ActiveSupport::StringInquirer.new(ENV["CHARMING_ENV"] || "development") end |
.env=(value) ⇒ Object
Overrides the environment (used by tests and the CLI).
36 37 38 |
# File 'lib/charming.rb', line 36 def self.env=(value) @env = value.nil? ? nil : ActiveSupport::StringInquirer.new(value.to_s) end |
.key_binding_name(name) ⇒ Object
Normalizes key declarations so ‘control+p` and `ctrl+p` resolve to the same binding.
67 68 69 70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/charming.rb', line 67 def self.key_binding_name(name) parts = name.to_s.split("+") return name.to_sym if parts.size == 1 key = parts.pop.downcase modifiers = parts.map do |part| modifier = part.downcase (modifier == "control") ? "ctrl" : modifier end ordered_modifiers = %w[ctrl alt shift].select { |modifier| modifiers.include?(modifier) } ordered_modifiers += modifiers - ordered_modifiers :"#{(ordered_modifiers + [key]).join("+")}" end |
.key_of(event) ⇒ Object
Returns the normalized key symbol for an event-like object — ‘event.key` when the object responds to it, otherwise `event.to_sym`. Lets components treat raw strings and KeyEvent objects uniformly.
48 49 50 51 |
# File 'lib/charming.rb', line 48 def self.key_of(event) key = event.respond_to?(:key) ? event.key : event key.to_sym end |
.key_signature(event) ⇒ Object
Returns the key signature used for controller bindings, including modifier flags.
54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/charming.rb', line 54 def self.key_signature(event) key = key_of(event) modifiers = [] modifiers << "ctrl" if event.respond_to?(:ctrl) && event.ctrl modifiers << "alt" if event.respond_to?(:alt) && event.alt modifiers << "shift" if event.respond_to?(:shift) && event.shift return key if modifiers.empty? :"#{modifiers.join("+")}+#{key}" end |
.run(application, backend: nil) ⇒ Object
Entry point for running a Charming application. Instantiates a Runtime for application and starts the event loop. backend defaults to TTYBackend; tests pass MemoryBackend directly via ‘Charming::Runtime.new`.
42 43 44 |
# File 'lib/charming.rb', line 42 def self.run(application, backend: nil) Runtime.new(application, backend: backend).run end |