wedge 0.2.3 → 0.2.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/wedge/opal.rb +120 -119
- data/lib/wedge/version.rb +1 -1
- data/wedge.gemspec +1 -2
- metadata +4 -18
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA1:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 54944284d00e24ca9e6e454c117aba4d64a9af6e
         | 
| 4 | 
            +
              data.tar.gz: 77d2c5b902b1554c3603c281c1dd22a61aacc50b
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 06d7116b3e7ddef035a3905ddc83f8af1d90f0228f9a679e89747cd9f6b4ddcc1bcefc74c89ba779e60cdbc6849770334b32df7850fcc2de156f303161ae1e22
         | 
| 7 | 
            +
              data.tar.gz: b2dcb475ae9ff5b2e03217b0c92b3cc8262a26918538ec9268b3d15df3d50672d4bba32762a0e8a8ba5c83e69eb6f7bdc881d8b40fe8ca56279b687233bf5fd5
         | 
    
        data/lib/wedge/opal.rb
    CHANGED
    
    | @@ -1,156 +1,157 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
               | 
| 3 | 
            -
             | 
| 4 | 
            -
                  # @return [String] Compiled javascript.
         | 
| 5 | 
            -
                  def javascript
         | 
| 6 | 
            -
                    to_s
         | 
| 7 | 
            -
                  end
         | 
| 8 | 
            -
                end
         | 
| 9 | 
            -
             | 
| 10 | 
            -
                def self.original_compile(source, options = {})
         | 
| 11 | 
            -
                  Compiler.new(source, options).original_compile
         | 
| 12 | 
            -
                end
         | 
| 13 | 
            -
             | 
| 14 | 
            -
                class Compiler
         | 
| 15 | 
            -
                  alias_method :original_compile, :compile
         | 
| 16 | 
            -
                  def compile
         | 
| 17 | 
            -
                    @result = original_compile
         | 
| 18 | 
            -
             | 
| 19 | 
            -
                    if defined? Wedge
         | 
| 20 | 
            -
                      logical_path = self.file
         | 
| 21 | 
            -
                      classes    = Wedge.config.component_class
         | 
| 22 | 
            -
                      comp_class = classes["#{Wedge.config.app_dir}/#{logical_path}".gsub(/\//, '__')] || classes[logical_path.gsub(/\//, '__')]
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                      if logical_path == 'wedge'
         | 
| 25 | 
            -
                        compiled_data = Base64.encode64 Wedge.config.client_data.to_json
         | 
| 26 | 
            -
                        # We need to merge in some data that is only set on the server.
         | 
| 27 | 
            -
                        # i.e. path, assets_key etc....
         | 
| 28 | 
            -
                        @result << Opal.original_compile("require '#{self.file}'; Wedge.config.data = HashObject.new(Wedge.config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))")
         | 
| 29 | 
            -
                        # load all global plugins into wedge
         | 
| 30 | 
            -
                        Wedge.config.plugins.each do |path|
         | 
| 31 | 
            -
                          @result << Builder.build(path).to_s
         | 
| 32 | 
            -
                        end
         | 
| 33 | 
            -
                      elsif comp_class
         | 
| 34 | 
            -
                        comp_class.config.on_compile.each { |blk| comp_class.instance_exec(true, &blk) }
         | 
| 35 | 
            -
                        comp_name     = comp_class.config.name
         | 
| 36 | 
            -
                        compiled_data = Base64.encode64 comp_class.config.client_data.to_json
         | 
| 37 | 
            -
                        js            = ''
         | 
| 1 | 
            +
            class Wedge
         | 
| 2 | 
            +
              # Create our own opal instance.
         | 
| 3 | 
            +
              Opal = ::Opal.dup
         | 
| 38 4 |  | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 5 | 
            +
              unless RUBY_ENGINE == 'opal'
         | 
| 6 | 
            +
                module Opal
         | 
| 7 | 
            +
                  class Builder
         | 
| 8 | 
            +
                    # @return [String] Compiled javascript.
         | 
| 9 | 
            +
                    def javascript
         | 
| 10 | 
            +
                      to_s
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
                  end
         | 
| 42 13 |  | 
| 43 | 
            -
             | 
| 14 | 
            +
                  def self.original_compile(source, options = {})
         | 
| 15 | 
            +
                    Compiler.new(source, options).original_compile
         | 
| 16 | 
            +
                  end
         | 
| 44 17 |  | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 18 | 
            +
                  class Compiler
         | 
| 19 | 
            +
                    alias_method :original_compile, :compile
         | 
| 20 | 
            +
                    def compile
         | 
| 21 | 
            +
                      @result = original_compile
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      if defined? Wedge
         | 
| 24 | 
            +
                        logical_path = self.file
         | 
| 25 | 
            +
                        classes    = Wedge.config.component_class
         | 
| 26 | 
            +
                        comp_class = classes["#{Wedge.config.app_dir}/#{logical_path}".gsub(/\//, '__')] || classes[logical_path.gsub(/\//, '__')]
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                        if logical_path == 'wedge'
         | 
| 29 | 
            +
                          compiled_data = Base64.encode64 Wedge.config.client_data.to_json
         | 
| 30 | 
            +
                          # We need to merge in some data that is only set on the server.
         | 
| 31 | 
            +
                          # i.e. path, assets_key etc....
         | 
| 32 | 
            +
                          @result << Opal.original_compile("require '#{self.file}'; Wedge.config.data = HashObject.new(Wedge.config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))")
         | 
| 33 | 
            +
                          # load all global plugins into wedge
         | 
| 34 | 
            +
                          Wedge.config.plugins.each do |path|
         | 
| 35 | 
            +
                            @result << Builder.build(path).to_s
         | 
| 36 | 
            +
                          end
         | 
| 37 | 
            +
                        elsif comp_class
         | 
| 38 | 
            +
                          comp_class.config.on_compile.each { |blk| comp_class.instance_exec(true, &blk) }
         | 
| 39 | 
            +
                          comp_name     = comp_class.config.name
         | 
| 40 | 
            +
                          compiled_data = Base64.encode64 comp_class.config.client_data.to_json
         | 
| 41 | 
            +
                          js            = ''
         | 
| 42 | 
            +
             | 
| 43 | 
            +
                          js << "require '#{self.file}'; Wedge.config.component_class[:#{comp_name}].config.data = HashObject.new(Wedge.config.component_class[:#{comp_name}].config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))"
         | 
| 44 | 
            +
                          # todo: discuss: pass plugin settings that were set server side?
         | 
| 45 | 
            +
                          js << "; Wedge.plugin(:#{comp_name.to_s.gsub(/_plugin$/, '')})" if comp_class.config.is_plugin
         | 
| 46 | 
            +
             | 
| 47 | 
            +
                          @result << Opal.original_compile(js)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                          if compile_str = comp_class.config.compile_str
         | 
| 50 | 
            +
                            @result << compile_str
         | 
| 51 | 
            +
                          end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
                          load_requires logical_path
         | 
| 47 54 | 
             
                        end
         | 
| 48 | 
            -
             | 
| 49 | 
            -
                        load_requires logical_path
         | 
| 50 55 | 
             
                      end
         | 
| 51 | 
            -
                    end
         | 
| 52 56 |  | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 57 | 
            +
                      @result
         | 
| 58 | 
            +
                    end
         | 
| 55 59 |  | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            +
                    def load_requires path_name
         | 
| 61 | 
            +
                      if requires = Wedge.config.requires[path_name.gsub(/\//, '__')]
         | 
| 62 | 
            +
                        requires.each do |path|
         | 
| 63 | 
            +
                          next unless comp_class = Wedge.config.component_class[path]
         | 
| 60 64 |  | 
| 61 | 
            -
             | 
| 65 | 
            +
                          comp_class.config.on_compile.each { |blk| comp_class.instance_eval(&blk) }
         | 
| 62 66 |  | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 67 | 
            +
                          comp_name     = comp_class.config.name
         | 
| 68 | 
            +
                          compiled_data = Base64.encode64 comp_class.config.client_data.to_json
         | 
| 65 69 |  | 
| 66 | 
            -
             | 
| 70 | 
            +
                          load_requires path
         | 
| 67 71 |  | 
| 68 | 
            -
             | 
| 72 | 
            +
                          @result << Opal.original_compile("require '#{path}'; Wedge.config.component_class[:#{comp_name}].config.data = HashObject.new(Wedge.config.component_class[:#{comp_name}].config.data.to_h.merge JSON.parse(Base64.decode64('#{compiled_data}')))")
         | 
| 73 | 
            +
                        end
         | 
| 69 74 | 
             
                      end
         | 
| 70 75 | 
             
                    end
         | 
| 71 76 | 
             
                  end
         | 
| 72 | 
            -
                end
         | 
| 73 77 |  | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 78 | 
            +
                  class Server
         | 
| 79 | 
            +
                    attr_accessor :headers, :gzip
         | 
| 76 80 |  | 
| 77 | 
            -
             | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
             | 
| 81 | 
            -
             | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
             | 
| 81 | 
            +
                    def initialize debug_or_options = {}
         | 
| 82 | 
            +
                      unless Hash === debug_or_options
         | 
| 83 | 
            +
                        warn "passing a boolean to control debug is deprecated.\n"+
         | 
| 84 | 
            +
                          "Please pass an Hash instead: Server.new(debug: true)"
         | 
| 85 | 
            +
                        options = {:debug => debug_or_options}
         | 
| 86 | 
            +
                      else
         | 
| 87 | 
            +
                        options = debug_or_options
         | 
| 88 | 
            +
                      end
         | 
| 85 89 |  | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
             | 
| 89 | 
            -
             | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 90 | 
            +
                      @headers     = {}
         | 
| 91 | 
            +
                      @gzip        = false
         | 
| 92 | 
            +
                      @use_index   = true
         | 
| 93 | 
            +
                      @public_root = nil
         | 
| 94 | 
            +
                      @public_urls = ['/']
         | 
| 95 | 
            +
                      @sprockets   = options.fetch(:sprockets, ::Sprockets::Environment.new)
         | 
| 96 | 
            +
                      @debug       = options.fetch(:debug, true)
         | 
| 97 | 
            +
                      @prefix      = options.fetch(:prefix, '/assets')
         | 
| 94 98 |  | 
| 95 | 
            -
             | 
| 99 | 
            +
                      Opal.paths.each { |p| @sprockets.append_path(p) }
         | 
| 96 100 |  | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
                  end
         | 
| 100 | 
            -
             | 
| 101 | 
            -
                  def create_app
         | 
| 102 | 
            -
                    server, sprockets, prefix, headers = self, @sprockets, self.prefix, @headers
         | 
| 103 | 
            -
                    sprockets.logger.level ||= Logger::DEBUG
         | 
| 104 | 
            -
                    source_map_enabled = self.source_map_enabled
         | 
| 105 | 
            -
                    if source_map_enabled
         | 
| 106 | 
            -
                      maps_prefix = SOURCE_MAPS_PREFIX_PATH
         | 
| 107 | 
            -
                      maps_app = SourceMapServer.new(sprockets, maps_prefix)
         | 
| 108 | 
            -
                      ::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
         | 
| 101 | 
            +
                      yield self if block_given?
         | 
| 102 | 
            +
                      create_app
         | 
| 109 103 | 
             
                    end
         | 
| 110 104 |  | 
| 111 | 
            -
                     | 
| 112 | 
            -
                       | 
| 113 | 
            -
                       | 
| 114 | 
            -
                       | 
| 115 | 
            -
                      use Index, server if server.use_index
         | 
| 116 | 
            -
                      use Headers, server
         | 
| 105 | 
            +
                    def create_app
         | 
| 106 | 
            +
                      server, sprockets, prefix, headers = self, @sprockets, self.prefix, @headers
         | 
| 107 | 
            +
                      sprockets.logger.level ||= Logger::DEBUG
         | 
| 108 | 
            +
                      source_map_enabled = self.source_map_enabled
         | 
| 117 109 | 
             
                      if source_map_enabled
         | 
| 118 | 
            -
                         | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
             | 
| 110 | 
            +
                        maps_prefix = SOURCE_MAPS_PREFIX_PATH
         | 
| 111 | 
            +
                        maps_app = SourceMapServer.new(sprockets, maps_prefix)
         | 
| 112 | 
            +
                        ::Opal::Sprockets::SourceMapHeaderPatch.inject!(maps_prefix)
         | 
| 113 | 
            +
                      end
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                      @app = Rack::Builder.app do
         | 
| 116 | 
            +
                        not_found = lambda { |env| [404, {}, []] }
         | 
| 117 | 
            +
                        use Rack::Deflater
         | 
| 118 | 
            +
                        use Rack::ShowExceptions
         | 
| 119 | 
            +
                        use Index, server if server.use_index
         | 
| 120 | 
            +
                        use Headers, server
         | 
| 121 | 
            +
                        if source_map_enabled
         | 
| 122 | 
            +
                          map(maps_prefix) do
         | 
| 123 | 
            +
                            require 'rack/conditionalget'
         | 
| 124 | 
            +
                            require 'rack/etag'
         | 
| 125 | 
            +
                            use Rack::ConditionalGet
         | 
| 126 | 
            +
                            use Rack::ETag
         | 
| 127 | 
            +
                            run maps_app
         | 
| 128 | 
            +
                          end
         | 
| 124 129 | 
             
                        end
         | 
| 130 | 
            +
                        map(prefix) { run sprockets }
         | 
| 131 | 
            +
                        run Rack::Static.new(not_found, root: server.public_root, urls: server.public_urls)
         | 
| 125 132 | 
             
                      end
         | 
| 126 | 
            -
                      map(prefix) { run sprockets }
         | 
| 127 | 
            -
                      run Rack::Static.new(not_found, root: server.public_root, urls: server.public_urls)
         | 
| 128 133 | 
             
                    end
         | 
| 129 | 
            -
                  end
         | 
| 130 134 |  | 
| 131 | 
            -
             | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 135 | 
            -
             | 
| 135 | 
            +
                    class Headers
         | 
| 136 | 
            +
                      def initialize(app, server)
         | 
| 137 | 
            +
                        @app    = app
         | 
| 138 | 
            +
                        @server = server
         | 
| 139 | 
            +
                      end
         | 
| 136 140 |  | 
| 137 | 
            -
             | 
| 138 | 
            -
             | 
| 139 | 
            -
             | 
| 141 | 
            +
                      def call(env)
         | 
| 142 | 
            +
                        if env['PATH_INFO'][@server.prefix]
         | 
| 143 | 
            +
                          status, headers, body = @app.call env
         | 
| 140 144 |  | 
| 141 | 
            -
             | 
| 142 | 
            -
             | 
| 143 | 
            -
             | 
| 145 | 
            +
                          [status, headers.merge(@server.headers), [body]]
         | 
| 146 | 
            +
                        else
         | 
| 147 | 
            +
                          @app.call env
         | 
| 148 | 
            +
                        end
         | 
| 144 149 | 
             
                      end
         | 
| 145 150 | 
             
                    end
         | 
| 146 151 | 
             
                  end
         | 
| 147 152 | 
             
                end
         | 
| 148 153 | 
             
              end
         | 
| 149 | 
            -
            end
         | 
| 150 154 |  | 
| 151 | 
            -
            class Wedge
         | 
| 152 | 
            -
              # Create our own opal instance.
         | 
| 153 | 
            -
              Opal = ::Opal.dup
         | 
| 154 155 |  | 
| 155 156 | 
             
              def self.version
         | 
| 156 157 | 
             
                Wedge::VERSION
         | 
    
        data/lib/wedge/version.rb
    CHANGED
    
    
    
        data/wedge.gemspec
    CHANGED
    
    | @@ -18,8 +18,7 @@ Gem::Specification.new do |spec| | |
| 18 18 | 
             
              spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
         | 
| 19 19 | 
             
              spec.require_paths = ["lib"]
         | 
| 20 20 |  | 
| 21 | 
            -
              spec.add_runtime_dependency "opal- | 
| 22 | 
            -
              spec.add_runtime_dependency "opal-jquery", '~> 0.4.0'
         | 
| 21 | 
            +
              spec.add_runtime_dependency "opal-jquery", '~> 0.4.1'
         | 
| 23 22 | 
             
              spec.add_runtime_dependency "nokogiri"
         | 
| 24 23 |  | 
| 25 24 | 
             
              spec.add_development_dependency 'rspec'
         | 
    
        metadata
    CHANGED
    
    | @@ -1,43 +1,29 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: wedge
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.2. | 
| 4 | 
            +
              version: 0.2.4
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - cj
         | 
| 8 8 | 
             
            autorequire: 
         | 
| 9 9 | 
             
            bindir: bin
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date: 2016- | 
| 11 | 
            +
            date: 2016-03-31 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            -
              name: opal-wedge
         | 
| 15 | 
            -
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            -
                requirements:
         | 
| 17 | 
            -
                - - ">="
         | 
| 18 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            -
                    version: 0.8.0
         | 
| 20 | 
            -
              type: :runtime
         | 
| 21 | 
            -
              prerelease: false
         | 
| 22 | 
            -
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            -
                requirements:
         | 
| 24 | 
            -
                - - ">="
         | 
| 25 | 
            -
                  - !ruby/object:Gem::Version
         | 
| 26 | 
            -
                    version: 0.8.0
         | 
| 27 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 28 14 | 
             
              name: opal-jquery
         | 
| 29 15 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 16 | 
             
                requirements:
         | 
| 31 17 | 
             
                - - "~>"
         | 
| 32 18 | 
             
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            -
                    version: 0.4. | 
| 19 | 
            +
                    version: 0.4.1
         | 
| 34 20 | 
             
              type: :runtime
         | 
| 35 21 | 
             
              prerelease: false
         | 
| 36 22 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 23 | 
             
                requirements:
         | 
| 38 24 | 
             
                - - "~>"
         | 
| 39 25 | 
             
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            -
                    version: 0.4. | 
| 26 | 
            +
                    version: 0.4.1
         | 
| 41 27 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 42 28 | 
             
              name: nokogiri
         | 
| 43 29 | 
             
              requirement: !ruby/object:Gem::Requirement
         |