Module: Ruflet

Extended by:
UI::SharedControlForwarders
Defined in:
lib/ruflet_ui.rb,
lib/ruflet_core.rb,
lib/ruflet/version.rb,
lib/ruflet_ui/ruflet/app.rb,
lib/ruflet_ui/ruflet/dsl.rb,
lib/ruflet_ui/ruflet/page.rb,
lib/ruflet_ui/ruflet/event.rb,
lib/ruflet_ui/ruflet/colors.rb,
lib/ruflet_ui/ruflet/control.rb,
lib/ruflet_ui/ruflet/icon_data.rb,
lib/ruflet_protocol/ruflet/protocol.rb,
lib/ruflet_ui/ruflet/types/geometry.rb,
lib/ruflet_ui/ruflet/types/animation.rb,
lib/ruflet_ui/ruflet/types/text_style.rb,
lib/ruflet_ui/ruflet/ui/widget_builder.rb,
lib/ruflet_ui/ruflet/ui/control_factory.rb,
lib/ruflet_ui/ruflet/ui/control_methods.rb,
lib/ruflet_ui/ruflet/ui/control_registry.rb,
lib/ruflet_ui/ruflet/events/gesture_events.rb,
lib/ruflet_ui/ruflet/icons/material_icon_lookup.rb,
lib/ruflet_ui/ruflet/icons/cupertino_icon_lookup.rb,
lib/ruflet_ui/ruflet/ui/controls/ruflet_controls.rb,
lib/ruflet_ui/ruflet/ui/material_control_factory.rb,
lib/ruflet_ui/ruflet/ui/material_control_methods.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet_services.rb,
lib/ruflet_ui/ruflet/ui/cupertino_control_factory.rb,
lib/ruflet_ui/ruflet/ui/cupertino_control_methods.rb,
lib/ruflet_ui/ruflet/ui/material_control_registry.rb,
lib/ruflet_ui/ruflet/ui/shared_control_forwarders.rb,
lib/ruflet_ui/ruflet/icons/material/material_icons.rb,
lib/ruflet_ui/ruflet/ui/cupertino_control_registry.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/arc_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/row_control.rb,
lib/ruflet_ui/ruflet/icons/cupertino/cupertino_icons.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/fill_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/hero_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/icon_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/line_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/oval_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/page_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/path_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/rect_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/text_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/view_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/color_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/image_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/stack_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/share_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/tab_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/canvas_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/circle_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/column_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/points_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/shadow_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/window_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/camera_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/tester_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/card_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/chip_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/map_controls.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/tabs_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/dialogs_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/fletapp_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/overlay_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/pagelet_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/ruflet_controls.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/shimmer_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/battery_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/audio_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/badge_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/radio_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/video_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/basepage_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/gridview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/listview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/markdown_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/pageview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/safearea_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/textspan_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/wakelock_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/appbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/banner_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/button_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/chart_controls.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/option_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/slider_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/switch_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/tabbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/draggable_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/semantics_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/barometer_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/clipboard_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/gyroscope_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/datarow_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/divider_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/menubar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/ruflet_controls.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/segment_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/webview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/dragtarget_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/shadermask_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/filepicker_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/flashlight_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/geolocator_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/screenshot_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/ruflet_controls.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/checkbox_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/datacell_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/dropdown_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/listtile_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/snackbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/dismissible_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/placeholder_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/urllauncher_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/container_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/datatable_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/searchbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/textfield_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/connectivity_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/magnetometer_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/storagepaths_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/datacolumn_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/datepicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/dropdownm2_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/iconbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/radiogroup_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/tabbarview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/textbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/timepicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/autofillgroup_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/responsiverow_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/accelerometer_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/securestorage_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/shakedetector_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/alertdialog_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/bottomsheet_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/contextmenu_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/progressbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/rangeslider_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/mergesemantics_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/windowdragarea_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/audio_recorder_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/hapticfeedback_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/autocomplete_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/bottomappbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/circleavatar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/filledbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/progressring_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/gesturedetector_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/serviceregistry_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/expansiontile_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/popupmenuitem_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/selectionarea_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/submenubutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/animatedswitcher_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/keyboardlistener_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/screenbrightness_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/semanticsservice_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/dropdownoption_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanel_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/menuitembutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationrail_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/outlinedbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/interactiveviewer_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/permissionhandler_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/sharedpreferences_control.rb,
lib/ruflet_ui/ruflet/ui/services/ruflet/useraccelerometer_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoradio_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/daterangepicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/popupmenubutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/segmentedbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/verticaldivider_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/browsercontextmenu_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/transparentpointer_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoappbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinopicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslider_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoswitch_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/fillediconbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawer_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/filledtonalbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocheckbox_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinolisttile_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/expansionpanellist_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/outlinediconbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/shared/reorderabledraghandle_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotextfield_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/reorderablelistview_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodatepicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/floatingactionbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheet_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoalertdialog_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinobottomsheet_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenu_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotimerpicker_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/filledtonaliconbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinodialogaction_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinofilledbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinotintedbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/autocompletesuggestion_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinonavigationbar_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationbardestination_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinosegmentedbutton_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationraildestination_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactionsheetaction_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoactivityindicator_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinocontextmenuaction_control.rb,
lib/ruflet_ui/ruflet/ui/controls/materials/navigationdrawerdestination_control.rb,
lib/ruflet_ui/ruflet/ui/controls/cupertinos/cupertinoslidingsegmentedbutton_control.rb

Defined Under Namespace

Modules: Colors, CrossAxisAlignment, CupertinoIconLookup, CupertinoIcons, DSL, Events, Icons, MainAxisAlignment, MaterialIconLookup, MaterialIcons, Protocol, TextAlign, UI Classes: App, Control, Event, IconData, Page, WidgetBuilder

Constant Summary collapse

TextStyle =
UI::Types::TextStyle
StrutStyle =
UI::Types::StrutStyle
TextOverflow =
UI::Types::TextOverflow
TextBaseline =
UI::Types::TextBaseline
TextThemeStyle =
UI::Types::TextThemeStyle
TextDecoration =
UI::Types::TextDecoration
TextDecorationStyle =
UI::Types::TextDecorationStyle
Offset =
UI::Types::Offset
Duration =
UI::Types::Duration
Animation =
UI::Types::Animation
AnimationStyle =
UI::Types::AnimationStyle
AnimationCurve =
UI::Types::AnimationCurve
VERSION =
"0.0.13"

Class Method Summary collapse

Methods included from UI::SharedControlForwarders

alert_dialog, alertdialog, animated_switcher, animatedswitcher, animation, animation_style, app_bar, appbar, arc, audio, auto_complete, auto_complete_suggestion, autocomplete, autocomplete_suggestion, autocompletesuggestion, badge, banner, bar_chart, bar_chart_group, bar_chart_rod, bar_chart_rod_stack_item, barchart, barchartgroup, barchartrod, barchartrodstackitem, bottom_app_bar, bottom_sheet, bottomappbar, bottomsheet, button, candlestick_chart, candlestick_chart_spot, candlestickchart, candlestickchartspot, canvas, canvas_color, card, center, chart_axis, chart_axis_label, chartaxis, chartaxislabel, checkbox, chip, circle, circle_avatar, circle_layer, circle_marker, circleavatar, circlelayer, circlemarker, clipboard, color, column, container, context_menu, contextmenu, control, cupertino_action_sheet, cupertino_action_sheet_action, cupertino_activity_indicator, cupertino_alert_dialog, cupertino_app_bar, cupertino_bottom_sheet, cupertino_button, cupertino_checkbox, cupertino_context_menu, cupertino_context_menu_action, cupertino_date_picker, cupertino_dialog_action, cupertino_filled_button, cupertino_list_tile, cupertino_navigation_bar, cupertino_picker, cupertino_radio, cupertino_segmented_button, cupertino_slider, cupertino_sliding_segmented_button, cupertino_switch, cupertino_text_field, cupertino_timer_picker, cupertino_tinted_button, cupertinoactionsheet, cupertinoactionsheetaction, cupertinoactivityindicator, cupertinoalertdialog, cupertinoappbar, cupertinobottomsheet, cupertinobutton, cupertinocheckbox, cupertinocontextmenu, cupertinocontextmenuaction, cupertinodatepicker, cupertinodialogaction, cupertinofilledbutton, cupertinolisttile, cupertinonavigationbar, cupertinopicker, cupertinoradio, cupertinosegmentedbutton, cupertinoslider, cupertinoslidingsegmentedbutton, cupertinoswitch, cupertinotextfield, cupertinotimerpicker, cupertinotintedbutton, data_cell, data_column, data_row, data_table, datacell, datacolumn, datarow, datatable, date_picker, date_range_picker, datepicker, daterangepicker, dismissible, divider, drag_target, draggable, dragtarget, dropdown, dropdown_m2, dropdown_option, dropdownm2, dropdownoption, duration, elevated_button, expansion_panel, expansion_panel_list, expansion_tile, expansionpanel, expansionpanellist, expansiontile, fab, fill, filled_button, filled_icon_button, filled_tonal_button, filled_tonal_icon_button, filledbutton, fillediconbutton, filledtonalbutton, filledtonaliconbutton, floating_action_button, floatingactionbutton, gesture_detector, gesturedetector, grid_view, gridview, icon, icon_button, iconbutton, image, interactive_viewer, interactiveviewer, keyboard_listener, keyboardlistener, line, line_chart, line_chart_data, line_chart_data_point, linechart, linechartdata, linechartdatapoint, list_tile, list_view, listtile, listview, map, markdown, marker, marker_layer, markerlayer, menu_bar, menu_item_button, menubar, menuitembutton, merge_semantics, mergesemantics, navigation_bar, navigation_bar_destination, navigation_drawer, navigation_drawer_destination, navigation_rail, navigation_rail_destination, navigationbar, navigationbardestination, navigationdrawer, navigationdrawerdestination, navigationrail, navigationraildestination, outlined_button, outlined_icon_button, outlinedbutton, outlinediconbutton, oval, page_view, pageview, paint, path, path_arc, path_arc_to, path_close, path_cubic_to, path_line_to, path_move_to, path_oval, path_quadratic_to, path_rect, path_sub_path, pie_chart, pie_chart_section, piechart, piechartsection, placeholder, points, polygon_layer, polygon_marker, polygonlayer, polygonmarker, polyline_layer, polyline_marker, polylinelayer, polylinemarker, popup_menu_button, popup_menu_item, popupmenubutton, popupmenuitem, progress_bar, progress_ring, progressbar, progressring, radar_chart, radar_chart_title, radar_data_set, radar_data_set_entry, radarchart, radarcharttitle, radardataset, radardatasetentry, radio, radio_group, radiogroup, range_slider, rangeslider, rect, reorderable_drag_handle, reorderable_list_view, reorderabledraghandle, reorderablelistview, responsive_row, responsiverow, row, safe_area, safearea, scatter_chart, scatter_chart_spot, scatterchart, scatterchartspot, search_bar, searchbar, segment, segmented_button, segmentedbutton, selection_area, selectionarea, semantics, service, shadow, simple_attribution, simpleattribution, slider, snack_bar, snackbar, stack, submenu_button, submenubutton, switch, tab, tab_bar, tab_bar_view, tabbar, tabbarview, tabs, text, text_button, text_field, textbutton, textfield, tile_layer, tilelayer, time_picker, timepicker, transparent_pointer, transparentpointer, vertical_divider, verticaldivider, video, view, web_view, webview, widget, window_drag_area, windowdragarea

Class Method Details

.app(host: nil, port: nil, &block) ⇒ Object



122
123
124
# File 'lib/ruflet_ui.rb', line 122

def app(host: nil, port: nil, &block)
  DSL.app(host: host, port: port, &block)
end

.run(entrypoint = nil, host: "0.0.0.0", port: 8550, &block) ⇒ Object

Raises:

  • (ArgumentError)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/ruflet_core.rb', line 13

def run(entrypoint = nil, host: "0.0.0.0", port: 8550, &block)
  callback = entrypoint || block
  raise ArgumentError, "Ruflet.run requires a callable entrypoint or block" unless callback.respond_to?(:call)

  interceptor = @run_interceptors_mutex.synchronize { @run_interceptors.last }
  if interceptor
    result = interceptor.call(entrypoint: callback, host: host, port: port)
    return result unless result == :pass
  end

  begin
    require "ruflet_server"
  rescue LoadError => e
    raise LoadError, "Ruflet.run requires the 'ruflet_server' gem unless a run interceptor handles execution.", e.backtrace
  end

  Server.new(host: host, port: port) do |page|
    callback.call(page)
  end.start
end

.with_run_interceptor(interceptor) ⇒ Object



34
35
36
37
38
39
# File 'lib/ruflet_core.rb', line 34

def with_run_interceptor(interceptor)
  @run_interceptors_mutex.synchronize { @run_interceptors << interceptor }
  yield
ensure
  @run_interceptors_mutex.synchronize { @run_interceptors.delete(interceptor) }
end