Sha256: 352354c5ef307fe2c51574c1801c3a210e996e2379beb4264de6a27008203056

Contents?: true

Size: 1.69 KB

Versions: 33

Compression:

Stored size: 1.69 KB

Contents

require 'glimmer/dsl/static_expression'
require 'glimmer/dsl/top_level_expression'
require 'glimmer/dsl/parent_expression'
require 'glimmer/swt/shell_proxy'
require 'glimmer/swt/make_shift_shell_proxy'
require 'glimmer/ui/custom_shell'
require 'glimmer/dsl/opal/custom_widget_expression'

module Glimmer
  module DSL
    module Opal
      class ShellExpression < StaticExpression
        include TopLevelExpression
        include ParentExpression

        def interpret(parent, keyword, *args, &block)
          if Glimmer::UI::CustomShell.requested_and_not_handled?
            parameters = Glimmer::UI::CustomShell.request_parameter_string.split("&").map {|str| str.split("=")}.to_h
            `history.pushState(#{parameters.merge('custom_shell_handled' => 'true')}, document.title, #{"?#{Glimmer::UI::CustomShell.encoded_request_parameter_string}&custom_shell_handled=true"})`
            custom_shell_keyword = parameters.delete('custom_shell')
            CustomWidgetExpression.new.interpret(nil, custom_shell_keyword, *[parameters])
            `history.pushState(#{parameters.reject {|k,v| k == 'custom_shell_handled'}}, document.title, #{"?#{Glimmer::UI::CustomShell.encoded_request_parameter_string.sub('&custom_shell_handled=true', '')}"})`
            # just a placeholder that has an open method # TODO return an actual CustomShell in the future that does the work happening above in the #open method
            Glimmer::SWT::MakeShiftShellProxy.new
          else
            Glimmer::SWT::ShellProxy.new(*args)
          end
        end
        
        def add_content(parent, keyword, *args, &block)
          super(parent, &block)
          parent.post_add_content
        end
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
glimmer-dsl-opal-0.28.3 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.28.2 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.28.1 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.28.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.27.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.26.3 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.26.2 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.26.1 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.26.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.25.4 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.25.3 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.25.2 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.25.1 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.25.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.24.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.23.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.22.1 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.22.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.21.0 lib/glimmer/dsl/opal/shell_expression.rb
glimmer-dsl-opal-0.20.1 lib/glimmer/dsl/opal/shell_expression.rb