Sha256: a02744ab4ade24eba7b60008248be1d9e4bbad9d9d19cf55d5f9745baa9edaf0

Contents?: true

Size: 1.29 KB

Versions: 9

Compression:

Stored size: 1.29 KB

Contents

# frozen_string_literal: true

module UltraSettings
  # Helper class for rendering the settings information in an HTML page.
  class WebView
    attr_reader :css

    # @param color_scheme [Symbol] The color scheme to use in the UI. This can be `:light`,
    #  `:dark`, or `:system`. The default is `:light`.
    def initialize(color_scheme: :light)
      color_scheme = (color_scheme || :light).to_sym
      @layout_template = erb_template("layout.html.erb")
      @layout_css = layout_css(color_scheme)
      @css = application_css(color_scheme)
    end

    def render_settings
      @layout_template.result(binding)
    end

    def content
      UltraSettings::ApplicationView.new.render
    end

    private

    def erb_template(path)
      ERB.new(read_app_file(path))
    end

    def read_app_file(path)
      File.read(File.join(app_dir, path))
    end

    def app_dir
      File.expand_path(File.join("..", "..", "app"), __dir__)
    end

    def layout_css(color_scheme)
      vars = erb_template("layout_vars.css.erb").result(binding)
      css = read_app_file("layout.css")
      "#{vars}\n#{css}"
    end

    def application_css(color_scheme)
      vars = erb_template("application_vars.css.erb").result(binding)
      css = read_app_file("application.css")
      "#{vars}\n#{css}"
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
ultra_settings-2.4.5 lib/ultra_settings/web_view.rb
ultra_settings-2.4.4 lib/ultra_settings/web_view.rb
ultra_settings-2.4.3 lib/ultra_settings/web_view.rb
ultra_settings-2.4.2 lib/ultra_settings/web_view.rb
ultra_settings-2.4.1 lib/ultra_settings/web_view.rb
ultra_settings-2.4.0 lib/ultra_settings/web_view.rb
ultra_settings-2.3.0 lib/ultra_settings/web_view.rb
ultra_settings-2.2.0 lib/ultra_settings/web_view.rb
ultra_settings-2.1.0 lib/ultra_settings/web_view.rb