spark_engine 1.0.0
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 +7 -0
 - data/.gitignore +12 -0
 - data/CODE_OF_CONDUCT.md +49 -0
 - data/Gemfile +4 -0
 - data/LICENSE.txt +21 -0
 - data/README.md +34 -0
 - data/Rakefile +2 -0
 - data/bin/spark +99 -0
 - data/lib/spark_engine/assets.rb +8 -0
 - data/lib/spark_engine/command/help.rb +86 -0
 - data/lib/spark_engine/command/npm.rb +62 -0
 - data/lib/spark_engine/command.rb +156 -0
 - data/lib/spark_engine/config_data.rb +29 -0
 - data/lib/spark_engine/helpers/asset_helpers.rb +66 -0
 - data/lib/spark_engine/helpers/layout_helpers.rb +21 -0
 - data/lib/spark_engine/middleware.rb +72 -0
 - data/lib/spark_engine/plugin/assets/asset.rb +163 -0
 - data/lib/spark_engine/plugin/assets/javascripts.rb +83 -0
 - data/lib/spark_engine/plugin/assets/stylesheets.rb +88 -0
 - data/lib/spark_engine/plugin/assets/svgs.rb +79 -0
 - data/lib/spark_engine/plugin.rb +191 -0
 - data/lib/spark_engine/sass/engine.rb +21 -0
 - data/lib/spark_engine/sass/importer.rb +103 -0
 - data/lib/spark_engine/scaffold/gem/.gitignore +18 -0
 - data/lib/spark_engine/scaffold/gem/app/assets/images/namespace/.keep +0 -0
 - data/lib/spark_engine/scaffold/gem/app/assets/javascripts/namespace/engine.js +3 -0
 - data/lib/spark_engine/scaffold/gem/app/assets/stylesheets/namespace/_index.scss +1 -0
 - data/lib/spark_engine/scaffold/gem/app/assets/svgs/namespace/.keep +0 -0
 - data/lib/spark_engine/scaffold/gem/app/helpers/namespace/application_helper.rb +4 -0
 - data/lib/spark_engine/scaffold/gem/app/views/layouts/namespace/default.html.erb +18 -0
 - data/lib/spark_engine/scaffold/gem/gem.gemspec +24 -0
 - data/lib/spark_engine/scaffold/gem/lib/gem.rb +12 -0
 - data/lib/spark_engine/scaffold/gem/site/app/assets/javascripts/application.js +1 -0
 - data/lib/spark_engine/scaffold/gem/site/app/assets/stylesheets/application.scss +2 -0
 - data/lib/spark_engine/scaffold/gem/site/app/controllers/docs_controller.rb +19 -0
 - data/lib/spark_engine/scaffold/gem/site/app/views/docs/index.html.erb +1 -0
 - data/lib/spark_engine/scaffold/gem/site/app/views/layouts/application.html.erb +4 -0
 - data/lib/spark_engine/scaffold/gem/site/config/application.rb +18 -0
 - data/lib/spark_engine/scaffold/gem/site/config/environments/development.rb +13 -0
 - data/lib/spark_engine/scaffold/gem/site/config/routes.rb +3 -0
 - data/lib/spark_engine/scaffold.rb +191 -0
 - data/lib/spark_engine/version.rb +3 -0
 - data/lib/spark_engine.rb +106 -0
 - data/spark_engine.gemspec +31 -0
 - metadata +234 -0
 
| 
         @@ -0,0 +1,103 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'sass'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'yaml'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module SparkEngine
         
     | 
| 
      
 5 
     | 
    
         
            +
              module SassParser
         
     | 
| 
      
 6 
     | 
    
         
            +
                extend self
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # Global vars beginning with underscore will have their children promoted to globals
         
     | 
| 
      
 9 
     | 
    
         
            +
                # and will be assigned without the underscore
         
     | 
| 
      
 10 
     | 
    
         
            +
                #
         
     | 
| 
      
 11 
     | 
    
         
            +
                # For example: _colors: { yellow: '#fco' }
         
     | 
| 
      
 12 
     | 
    
         
            +
                #     becomes: colors: { yellow: '#fco'}, yellow: '#fco'
         
     | 
| 
      
 13 
     | 
    
         
            +
                #
         
     | 
| 
      
 14 
     | 
    
         
            +
                #
         
     | 
| 
      
 15 
     | 
    
         
            +
                def load_yaml(data)
         
     | 
| 
      
 16 
     | 
    
         
            +
                  promote_globals YAML.load(data)
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def read_file(file)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  IO.read(file)
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def promote_globals( data )
         
     | 
| 
      
 24 
     | 
    
         
            +
                  data.keys.select{|k| k.start_with?('_') }.each do |key|
         
     | 
| 
      
 25 
     | 
    
         
            +
                    data[key.sub(/^_/,'')] = data[key]
         
     | 
| 
      
 26 
     | 
    
         
            +
                    data = data.delete(key).merge(data)
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  data
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                def expand_vars(file)
         
     | 
| 
      
 33 
     | 
    
         
            +
                  content   = read_file(file)
         
     | 
| 
      
 34 
     | 
    
         
            +
                  file_data = load_yaml(content)
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                  content = content.gsub(/\$(?<var>\w+)/) do
         
     | 
| 
      
 37 
     | 
    
         
            +
                    file_data[$~[:var]].inspect
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
                  load_yaml content
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def parse(file)
         
     | 
| 
      
 44 
     | 
    
         
            +
                  expand_vars file
         
     | 
| 
      
 45 
     | 
    
         
            +
                end
         
     | 
| 
      
 46 
     | 
    
         
            +
              end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
              class Importer < Sass::Importers::Filesystem
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                def watched_file?(uri)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  !!(uri =~ /\.yml$/ &&
         
     | 
| 
      
 52 
     | 
    
         
            +
                    uri.start_with?(root + File::SEPARATOR))
         
     | 
| 
      
 53 
     | 
    
         
            +
                end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
                protected
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                def extensions
         
     | 
| 
      
 58 
     | 
    
         
            +
                  {'yml' => :scss}
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                def yaml?(name)
         
     | 
| 
      
 62 
     | 
    
         
            +
                  File.extname(name) == '.yml'
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                private
         
     | 
| 
      
 66 
     | 
    
         
            +
             
     | 
| 
      
 67 
     | 
    
         
            +
                def _find(dir, name, options)
         
     | 
| 
      
 68 
     | 
    
         
            +
                  return unless yaml? name
         
     | 
| 
      
 69 
     | 
    
         
            +
             
     | 
| 
      
 70 
     | 
    
         
            +
                  full_filename, syntax = Sass::Util.destructure(find_real_file(dir, name, options))
         
     | 
| 
      
 71 
     | 
    
         
            +
                  return unless full_filename && File.readable?(full_filename)
         
     | 
| 
      
 72 
     | 
    
         
            +
             
     | 
| 
      
 73 
     | 
    
         
            +
                  yaml       = SassParser.parse(full_filename)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  variables  = yaml.map { |key, value| "$#{key}: #{_convert_to_sass(value)};" }.join("\n")
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                  Sass::Engine.new(variables, options.merge(
         
     | 
| 
      
 77 
     | 
    
         
            +
                      :filename => full_filename,
         
     | 
| 
      
 78 
     | 
    
         
            +
                      :importer => self,
         
     | 
| 
      
 79 
     | 
    
         
            +
                      :syntax   => :scss
         
     | 
| 
      
 80 
     | 
    
         
            +
                  ))
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                def _convert_to_sass(item)
         
     | 
| 
      
 84 
     | 
    
         
            +
                  if item.is_a? Array
         
     | 
| 
      
 85 
     | 
    
         
            +
                    _make_list(item)
         
     | 
| 
      
 86 
     | 
    
         
            +
                  elsif item.is_a? Hash
         
     | 
| 
      
 87 
     | 
    
         
            +
                    _make_map(item)
         
     | 
| 
      
 88 
     | 
    
         
            +
                  else
         
     | 
| 
      
 89 
     | 
    
         
            +
                    item.to_s
         
     | 
| 
      
 90 
     | 
    
         
            +
                  end
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def _make_list(item)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  '(' + item.map { |i| _convert_to_sass(i) }.join(',') + ')'
         
     | 
| 
      
 95 
     | 
    
         
            +
                end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
                def _make_map(item)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  '(' + item.map {|key, value| key.to_s + ':' + _convert_to_sass(value) }.join(',') + ')'
         
     | 
| 
      
 99 
     | 
    
         
            +
                end
         
     | 
| 
      
 100 
     | 
    
         
            +
              end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
            end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            // Design System Stylesheets index
         
     | 
| 
         
            File without changes
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <!DOCTYPE html>
         
     | 
| 
      
 2 
     | 
    
         
            +
            <html>
         
     | 
| 
      
 3 
     | 
    
         
            +
              <head>
         
     | 
| 
      
 4 
     | 
    
         
            +
                <title><%= @plugin_module %></title>
         
     | 
| 
      
 5 
     | 
    
         
            +
                <%%= csrf_meta_tags %>
         
     | 
| 
      
 6 
     | 
    
         
            +
                <%%= asset_tags %>
         
     | 
| 
      
 7 
     | 
    
         
            +
                <%%= yield :stylesheets %>
         
     | 
| 
      
 8 
     | 
    
         
            +
                <%%= yield :head %>
         
     | 
| 
      
 9 
     | 
    
         
            +
              </head>
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              <body>
         
     | 
| 
      
 12 
     | 
    
         
            +
                <div class='site'>
         
     | 
| 
      
 13 
     | 
    
         
            +
                  <div class='page'><%%= yield %></div>
         
     | 
| 
      
 14 
     | 
    
         
            +
                </div>
         
     | 
| 
      
 15 
     | 
    
         
            +
              </body>
         
     | 
| 
      
 16 
     | 
    
         
            +
              <%%= javascript_tag "<%= @engine %>" %>
         
     | 
| 
      
 17 
     | 
    
         
            +
              <%%= yield :javascripts %>
         
     | 
| 
      
 18 
     | 
    
         
            +
            </html>
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.push File.expand_path("../lib", __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require "<%= @spec.name %>/version"
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            # Describe your gem and declare its dependencies:
         
     | 
| 
      
 7 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.name        = "<%= @spec.name %>"
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.version     = <%= @gem_module %>::VERSION
         
     | 
| 
      
 10 
     | 
    
         
            +
              spec.authors     = <%= @spec.authors %>
         
     | 
| 
      
 11 
     | 
    
         
            +
              spec.email       = <%= @spec.email %>
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.summary     = "Summary of your gem."
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.description = "Description of your gem (usually longer)."
         
     | 
| 
      
 14 
     | 
    
         
            +
              spec.license     = "<%= @spec.license %>"
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              spec.files         = Dir["{app,lib,public,config}/**/*", "LICENSE.txt", "README.md"]
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.require_paths = ["lib"]
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              spec.add_dependency "rails", ">= 4"
         
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_runtime_dependency "spark_engine"
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_development_dependency "bundler", "~> 1.12"
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_development_dependency "rake", "~> 10.0"
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,12 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spark_engine'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require '<%= @gem %>/version'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module <%= @gem_module %>
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Plugin < SparkEngine::Plugin
         
     | 
| 
      
 6 
     | 
    
         
            +
              end
         
     | 
| 
      
 7 
     | 
    
         
            +
            end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            SparkEngine.register(<%= @gem_module %>::Plugin, {
         
     | 
| 
      
 10 
     | 
    
         
            +
              gem: '<%= @gem %>'<% unless @engine.nil? %>,
         
     | 
| 
      
 11 
     | 
    
         
            +
              engine: '<%= @engine %>'<% end %>
         
     | 
| 
      
 12 
     | 
    
         
            +
            })
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            //= require_tree .
         
     | 
| 
         @@ -0,0 +1,19 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            class DocsController < ApplicationController
         
     | 
| 
      
 2 
     | 
    
         
            +
              def show
         
     | 
| 
      
 3 
     | 
    
         
            +
                page = params[:page]
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
                %w(docs).each do | root_page |
         
     | 
| 
      
 6 
     | 
    
         
            +
                  if page.match(/#{root_page}\/?$/)
         
     | 
| 
      
 7 
     | 
    
         
            +
                    page = File.join(root_page, 'index')
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                if template_exists? page
         
     | 
| 
      
 12 
     | 
    
         
            +
                  render template: page
         
     | 
| 
      
 13 
     | 
    
         
            +
                elsif template_exists? "docs/\#{page}"
         
     | 
| 
      
 14 
     | 
    
         
            +
                  render template: "docs/\#{page}"
         
     | 
| 
      
 15 
     | 
    
         
            +
                else
         
     | 
| 
      
 16 
     | 
    
         
            +
                  render file: "404.html", status: :not_found
         
     | 
| 
      
 17 
     | 
    
         
            +
                end
         
     | 
| 
      
 18 
     | 
    
         
            +
              end
         
     | 
| 
      
 19 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            <h1><%= @plugin_module %> Documentation</h1>
         
     | 
| 
         @@ -0,0 +1,18 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require File.expand_path('../boot', __FILE__)
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            require "rails"
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Pick the frameworks you want:
         
     | 
| 
      
 5 
     | 
    
         
            +
            require "action_controller/railtie"
         
     | 
| 
      
 6 
     | 
    
         
            +
            require "action_view/railtie"
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "sprockets/railtie"
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            # Require the gems listed in Gemfile, including any gems
         
     | 
| 
      
 10 
     | 
    
         
            +
            # you've limited to :test, :development, or :production.
         
     | 
| 
      
 11 
     | 
    
         
            +
            Bundler.require(*Rails.groups)
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            require '<%= @gem %>'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            module Site
         
     | 
| 
      
 16 
     | 
    
         
            +
              class Application < SparkEngine::Application
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,13 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            Rails.application.configure do
         
     | 
| 
      
 2 
     | 
    
         
            +
              config.cache_classes = false
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
              # Do not eager load code on boot.
         
     | 
| 
      
 5 
     | 
    
         
            +
              config.eager_load = false
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
              # Show full error reports and disable caching.
         
     | 
| 
      
 8 
     | 
    
         
            +
              config.consider_all_requests_local       = true
         
     | 
| 
      
 9 
     | 
    
         
            +
              config.action_controller.perform_caching = false
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              # Print deprecation notices to the Rails logger.
         
     | 
| 
      
 12 
     | 
    
         
            +
              config.active_support.deprecation = :log
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,191 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "spark_engine/command/npm"
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module SparkEngine
         
     | 
| 
      
 5 
     | 
    
         
            +
              class Scaffold
         
     | 
| 
      
 6 
     | 
    
         
            +
                attr_reader :gem, :engine, :namespace, :plugin_module, :path, :gemspec_path
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                def initialize(options)
         
     | 
| 
      
 9 
     | 
    
         
            +
                  @cwd = File.expand_path(File.dirname(options[:name]))
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @gem = underscorize(File.basename(options[:name]))
         
     | 
| 
      
 11 
     | 
    
         
            +
                  @engine = underscorize(options[:engine] || @gem)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  @namespace = @engine
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @plugin_module = modulize @engine
         
     | 
| 
      
 14 
     | 
    
         
            +
                  @gem_module = modulize @gem
         
     | 
| 
      
 15 
     | 
    
         
            +
                  @gem_temp = ".#{@gem}-temp"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  FileUtils.mkdir_p @cwd
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  Dir.chdir @cwd do
         
     | 
| 
      
 20 
     | 
    
         
            +
                    puts "Creating new plugin #{@namespace}".bold
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
                    @gemspec_path = new_gem
         
     | 
| 
      
 23 
     | 
    
         
            +
                    @spec = Gem::Specification.load(@gemspec_path)
         
     | 
| 
      
 24 
     | 
    
         
            +
                    @path = File.expand_path(File.dirname(@gemspec_path))
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                    engine_scaffold
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                    bootstrap_gem
         
     | 
| 
      
 29 
     | 
    
         
            +
                    setup_package_json
         
     | 
| 
      
 30 
     | 
    
         
            +
                    update_git
         
     | 
| 
      
 31 
     | 
    
         
            +
                  end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
                  post_install
         
     | 
| 
      
 34 
     | 
    
         
            +
                end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
                # Create a new gem with Bundle's gem command
         
     | 
| 
      
 37 
     | 
    
         
            +
                #
         
     | 
| 
      
 38 
     | 
    
         
            +
                def new_gem
         
     | 
| 
      
 39 
     | 
    
         
            +
                  system "bundler gem #{gem}"
         
     | 
| 
      
 40 
     | 
    
         
            +
                  Dir.glob(File.join(gem, "/*.gemspec")).first
         
     | 
| 
      
 41 
     | 
    
         
            +
                end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                def setup_package_json
         
     | 
| 
      
 44 
     | 
    
         
            +
                  Dir.chdir path do
         
     | 
| 
      
 45 
     | 
    
         
            +
                    NPM.setup
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                def bootstrap_gem
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                  # Remove bin
         
     | 
| 
      
 52 
     | 
    
         
            +
                  FileUtils.rm_rf(File.join(path, 'bin'))
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  scaffold_path = File.expand_path("scaffold/**/*", File.dirname(__FILE__))
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                  Dir.glob(scaffold_path, File::FNM_DOTMATCH).select{|f| File.file? f}.each do |f|
         
     | 
| 
      
 57 
     | 
    
         
            +
                    write_template f.split(/spark_engine\/scaffold\//)[1]
         
     | 
| 
      
 58 
     | 
    
         
            +
                  end
         
     | 
| 
      
 59 
     | 
    
         
            +
                end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
                # Create an Rails plugin engine for documentation site
         
     | 
| 
      
 62 
     | 
    
         
            +
                def engine_scaffold
         
     | 
| 
      
 63 
     | 
    
         
            +
                  FileUtils.mkdir_p(@gem_temp)
         
     | 
| 
      
 64 
     | 
    
         
            +
                  Dir.chdir(@gem_temp) do
         
     | 
| 
      
 65 
     | 
    
         
            +
                    response = Open3.capture3("rails plugin new #{gem} --mountable --dummy-path=site --skip-test-unit")
         
     | 
| 
      
 66 
     | 
    
         
            +
                    if !response[1].empty?
         
     | 
| 
      
 67 
     | 
    
         
            +
                      puts response[1]
         
     | 
| 
      
 68 
     | 
    
         
            +
                      abort "FAILED: Please be sure you have the rails gem installed with `gem install rails`"
         
     | 
| 
      
 69 
     | 
    
         
            +
                    end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
                    # Remove files and directories that are unnecessary for the
         
     | 
| 
      
 72 
     | 
    
         
            +
                    # light-weight Rails documentation site
         
     | 
| 
      
 73 
     | 
    
         
            +
                    remove = %w(mailers models assets channels jobs views).map{ |f| File.join('app', f) }
         
     | 
| 
      
 74 
     | 
    
         
            +
                    remove.concat %w(cable.yml storage.yml database.yml).map{ |f| File.join('config', f) }
         
     | 
| 
      
 75 
     | 
    
         
            +
             
     | 
| 
      
 76 
     | 
    
         
            +
                    remove.each { |f| FileUtils.rm_rf File.join(@gem, 'site', f), secure: true }
         
     | 
| 
      
 77 
     | 
    
         
            +
                  end
         
     | 
| 
      
 78 
     | 
    
         
            +
                  
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
                  engine_copy
         
     | 
| 
      
 81 
     | 
    
         
            +
                end
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
                # Copy parts of the engine scaffold into site directory
         
     | 
| 
      
 84 
     | 
    
         
            +
                def engine_copy
         
     | 
| 
      
 85 
     | 
    
         
            +
                  site_path = File.join path, 'site'
         
     | 
| 
      
 86 
     | 
    
         
            +
                  FileUtils.mkdir_p site_path
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
      
 88 
     | 
    
         
            +
                  ## Copy Rails plugin files
         
     | 
| 
      
 89 
     | 
    
         
            +
                  Dir.chdir "#{@gem_temp}/#{gem}/site" do
         
     | 
| 
      
 90 
     | 
    
         
            +
                    %w(app config bin config.ru Rakefile public log).each do |item|
         
     | 
| 
      
 91 
     | 
    
         
            +
                      target = File.join site_path, item
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                      FileUtils.cp_r item, target
         
     | 
| 
      
 94 
     | 
    
         
            +
             
     | 
| 
      
 95 
     | 
    
         
            +
                      action_log "create", target.sub(@cwd+'/','')
         
     | 
| 
      
 96 
     | 
    
         
            +
                    end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
                  end
         
     | 
| 
      
 99 
     | 
    
         
            +
             
     | 
| 
      
 100 
     | 
    
         
            +
                  # Remove temp dir
         
     | 
| 
      
 101 
     | 
    
         
            +
                  FileUtils.rm_rf @gem_temp
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
                def update_git
         
     | 
| 
      
 105 
     | 
    
         
            +
                  Dir.chdir gem do
         
     | 
| 
      
 106 
     | 
    
         
            +
                    system "git reset"
         
     | 
| 
      
 107 
     | 
    
         
            +
                    system "git add -A"
         
     | 
| 
      
 108 
     | 
    
         
            +
                  end
         
     | 
| 
      
 109 
     | 
    
         
            +
                end
         
     | 
| 
      
 110 
     | 
    
         
            +
             
     | 
| 
      
 111 
     | 
    
         
            +
                def write_template(template, target=nil)
         
     | 
| 
      
 112 
     | 
    
         
            +
                  template_path = File.expand_path("scaffold/#{template}", File.dirname(__FILE__))
         
     | 
| 
      
 113 
     | 
    
         
            +
             
     | 
| 
      
 114 
     | 
    
         
            +
                  # Extract file extension
         
     | 
| 
      
 115 
     | 
    
         
            +
                  ext = File.extname(template)
         
     | 
| 
      
 116 
     | 
    
         
            +
             
     | 
| 
      
 117 
     | 
    
         
            +
                  # Replace keywords with correct names (excluding file extensions)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  target_path = template.sub(/#{ext}$/, '').gsub(/(gem|engine|namespace)/, { 
         
     | 
| 
      
 119 
     | 
    
         
            +
                    'gem' => @gem, 
         
     | 
| 
      
 120 
     | 
    
         
            +
                    'engine' => @engine,
         
     | 
| 
      
 121 
     | 
    
         
            +
                    'namespace' => @namespace
         
     | 
| 
      
 122 
     | 
    
         
            +
                  }) + ext
         
     | 
| 
      
 123 
     | 
    
         
            +
             
     | 
| 
      
 124 
     | 
    
         
            +
                  write_file target_path, read_template(template_path)
         
     | 
| 
      
 125 
     | 
    
         
            +
                end
         
     | 
| 
      
 126 
     | 
    
         
            +
             
     | 
| 
      
 127 
     | 
    
         
            +
                def read_template(file_path)
         
     | 
| 
      
 128 
     | 
    
         
            +
                  contents = ''
         
     | 
| 
      
 129 
     | 
    
         
            +
                  File.open file_path do |f|
         
     | 
| 
      
 130 
     | 
    
         
            +
                    contents = ERB.new(f.read).result(binding)
         
     | 
| 
      
 131 
     | 
    
         
            +
                  end
         
     | 
| 
      
 132 
     | 
    
         
            +
                  contents
         
     | 
| 
      
 133 
     | 
    
         
            +
                end
         
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                def write_file(paths, content='', mode='w')
         
     | 
| 
      
 136 
     | 
    
         
            +
                  paths = [paths].flatten
         
     | 
| 
      
 137 
     | 
    
         
            +
                  paths.each do |path|
         
     | 
| 
      
 138 
     | 
    
         
            +
                    if File.exist?(path)
         
     | 
| 
      
 139 
     | 
    
         
            +
                      type = 'update'
         
     | 
| 
      
 140 
     | 
    
         
            +
                    else
         
     | 
| 
      
 141 
     | 
    
         
            +
                      FileUtils.mkdir_p(File.dirname(path))
         
     | 
| 
      
 142 
     | 
    
         
            +
                      type = 'create'
         
     | 
| 
      
 143 
     | 
    
         
            +
                    end
         
     | 
| 
      
 144 
     | 
    
         
            +
             
     | 
| 
      
 145 
     | 
    
         
            +
                    File.open path, mode do |io|
         
     | 
| 
      
 146 
     | 
    
         
            +
                      io.write(content)
         
     | 
| 
      
 147 
     | 
    
         
            +
                    end
         
     | 
| 
      
 148 
     | 
    
         
            +
             
     | 
| 
      
 149 
     | 
    
         
            +
                    action_log(type, path)
         
     | 
| 
      
 150 
     | 
    
         
            +
                  end
         
     | 
| 
      
 151 
     | 
    
         
            +
                end
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
                def post_install
         
     | 
| 
      
 154 
     | 
    
         
            +
                  require 'pathname'
         
     | 
| 
      
 155 
     | 
    
         
            +
             
     | 
| 
      
 156 
     | 
    
         
            +
                  target = Pathname.new File.join(@cwd, @gem) 
         
     | 
| 
      
 157 
     | 
    
         
            +
                  dir = target.relative_path_from Pathname.new(Dir.pwd)
         
     | 
| 
      
 158 
     | 
    
         
            +
                  victory = "#{@plugin_module} Design System created at #{dir}. Huzzah!"
         
     | 
| 
      
 159 
     | 
    
         
            +
                  dashes = ''
         
     | 
| 
      
 160 
     | 
    
         
            +
                  victory.size.times{ dashes += '-' }
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                  puts "\n#{victory}\n#{dashes}".bold
         
     | 
| 
      
 163 
     | 
    
         
            +
             
     | 
| 
      
 164 
     | 
    
         
            +
                  puts "Install dependencies:"
         
     | 
| 
      
 165 
     | 
    
         
            +
                  puts "  - cd #{dir}"
         
     | 
| 
      
 166 
     | 
    
         
            +
                  puts "  - bundle"
         
     | 
| 
      
 167 
     | 
    
         
            +
                  puts "  - yarn install (or npm install)\n\n"
         
     | 
| 
      
 168 
     | 
    
         
            +
                  puts "Then give it a spin.\n\n"
         
     | 
| 
      
 169 
     | 
    
         
            +
                  puts "  spark build".bold + "  - builds assets"
         
     | 
| 
      
 170 
     | 
    
         
            +
                  puts "  spark server".bold + " - view documentation site in a server"
         
     | 
| 
      
 171 
     | 
    
         
            +
                  puts "  spark help".bold + "   - learn more…"
         
     | 
| 
      
 172 
     | 
    
         
            +
                  puts dashes + "\n\n"
         
     | 
| 
      
 173 
     | 
    
         
            +
                end
         
     | 
| 
      
 174 
     | 
    
         
            +
             
     | 
| 
      
 175 
     | 
    
         
            +
                def action_log(action, path)
         
     | 
| 
      
 176 
     | 
    
         
            +
                  puts action.rjust(12).colorize(:green).bold + "  #{path}"
         
     | 
| 
      
 177 
     | 
    
         
            +
                end
         
     | 
| 
      
 178 
     | 
    
         
            +
             
     | 
| 
      
 179 
     | 
    
         
            +
                def modulize(input)
         
     | 
| 
      
 180 
     | 
    
         
            +
                  input.split('_').collect { |name|
         
     | 
| 
      
 181 
     | 
    
         
            +
                    (name =~ /[A-Z]/) ? name : name.capitalize
         
     | 
| 
      
 182 
     | 
    
         
            +
                  }.join
         
     | 
| 
      
 183 
     | 
    
         
            +
                end
         
     | 
| 
      
 184 
     | 
    
         
            +
             
     | 
| 
      
 185 
     | 
    
         
            +
                def underscorize(input)
         
     | 
| 
      
 186 
     | 
    
         
            +
                  input.gsub(/[A-Z]/) do |char|
         
     | 
| 
      
 187 
     | 
    
         
            +
                    '_'+char
         
     | 
| 
      
 188 
     | 
    
         
            +
                  end.sub(/^_/,'').downcase
         
     | 
| 
      
 189 
     | 
    
         
            +
                end
         
     | 
| 
      
 190 
     | 
    
         
            +
              end
         
     | 
| 
      
 191 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/spark_engine.rb
    ADDED
    
    | 
         @@ -0,0 +1,106 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require "open3"
         
     | 
| 
      
 2 
     | 
    
         
            +
            require "json"
         
     | 
| 
      
 3 
     | 
    
         
            +
            require "colorize"
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            require "spark_engine/version"
         
     | 
| 
      
 6 
     | 
    
         
            +
            require "spark_engine/plugin"
         
     | 
| 
      
 7 
     | 
    
         
            +
            require "spark_engine/assets"
         
     | 
| 
      
 8 
     | 
    
         
            +
            require "spark_engine/sass/engine"
         
     | 
| 
      
 9 
     | 
    
         
            +
            require "spark_engine/sass/importer"
         
     | 
| 
      
 10 
     | 
    
         
            +
            require "spark_engine/config_data"
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            module SparkEngine
         
     | 
| 
      
 13 
     | 
    
         
            +
              extend self
         
     | 
| 
      
 14 
     | 
    
         
            +
              attr_accessor :plugin
         
     | 
| 
      
 15 
     | 
    
         
            +
              autoload :Application, "spark_engine/middleware"
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
              def production?
         
     | 
| 
      
 18 
     | 
    
         
            +
                ENV['CI'] || ENV['RAILS_ENV'] == 'production' || ( defined?(Command) && Command.production? )
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              def rails5?
         
     | 
| 
      
 22 
     | 
    
         
            +
               Gem::Version.new(Rails.version) >= Gem::Version.new('5') 
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def plugin
         
     | 
| 
      
 26 
     | 
    
         
            +
                @plugin
         
     | 
| 
      
 27 
     | 
    
         
            +
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def config_data
         
     | 
| 
      
 30 
     | 
    
         
            +
                SparkEngine::ConfigData.read(SparkEngine.plugin.root, Rails.root)
         
     | 
| 
      
 31 
     | 
    
         
            +
              end
         
     | 
| 
      
 32 
     | 
    
         
            +
             
     | 
| 
      
 33 
     | 
    
         
            +
              def register(plugin_module, options={}, &block)
         
     | 
| 
      
 34 
     | 
    
         
            +
                @plugin = plugin_module.new(options)
         
     | 
| 
      
 35 
     | 
    
         
            +
                if defined? Rails
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @plugin.create_engine(&block)
         
     | 
| 
      
 37 
     | 
    
         
            +
                  patch_rails
         
     | 
| 
      
 38 
     | 
    
         
            +
                end
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              def patch_rails
         
     | 
| 
      
 42 
     | 
    
         
            +
                load_helpers
         
     | 
| 
      
 43 
     | 
    
         
            +
              end
         
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
              def load_helpers
         
     | 
| 
      
 46 
     | 
    
         
            +
                require "spark_engine/helpers/asset_helpers"
         
     | 
| 
      
 47 
     | 
    
         
            +
                require "spark_engine/helpers/layout_helpers"
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
                SparkEngine::Helpers.constants.each do |c|
         
     | 
| 
      
 50 
     | 
    
         
            +
                  helper = SparkEngine::Helpers.const_get(c)
         
     | 
| 
      
 51 
     | 
    
         
            +
                  ActionView::Base.send :include, helper if defined? ActionView::Base
         
     | 
| 
      
 52 
     | 
    
         
            +
                end
         
     | 
| 
      
 53 
     | 
    
         
            +
              end
         
     | 
| 
      
 54 
     | 
    
         
            +
             
     | 
| 
      
 55 
     | 
    
         
            +
              def at_rails_root?
         
     | 
| 
      
 56 
     | 
    
         
            +
                File.exist?("bin/rails")
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              def plugin_gemspec
         
     | 
| 
      
 60 
     | 
    
         
            +
                if gem_path
         
     | 
| 
      
 61 
     | 
    
         
            +
                  path = File.join(gem_path, "*.gemspec")
         
     | 
| 
      
 62 
     | 
    
         
            +
                  Dir[path].first
         
     | 
| 
      
 63 
     | 
    
         
            +
                end
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
             
     | 
| 
      
 66 
     | 
    
         
            +
              def plugin_spec
         
     | 
| 
      
 67 
     | 
    
         
            +
                @plugin_spec ||= begin
         
     | 
| 
      
 68 
     | 
    
         
            +
                  if file = plugin_gemspec
         
     | 
| 
      
 69 
     | 
    
         
            +
                    spec = Gem::Specification.load(file)
         
     | 
| 
      
 70 
     | 
    
         
            +
                    spec if spec.name != 'spark_engine'
         
     | 
| 
      
 71 
     | 
    
         
            +
                  end
         
     | 
| 
      
 72 
     | 
    
         
            +
                end
         
     | 
| 
      
 73 
     | 
    
         
            +
              end
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
              def load_plugin
         
     | 
| 
      
 76 
     | 
    
         
            +
                plugin || if spec = plugin_spec
         
     | 
| 
      
 77 
     | 
    
         
            +
                  require spec.name unless spec.name == 'spark_engine'
         
     | 
| 
      
 78 
     | 
    
         
            +
                  return plugin
         
     | 
| 
      
 79 
     | 
    
         
            +
                end
         
     | 
| 
      
 80 
     | 
    
         
            +
              end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
              def at_gem_root?
         
     | 
| 
      
 83 
     | 
    
         
            +
                !Dir['*.gemspec'].empty?
         
     | 
| 
      
 84 
     | 
    
         
            +
              end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
              def gem_path
         
     | 
| 
      
 87 
     | 
    
         
            +
                if at_gem_root?
         
     | 
| 
      
 88 
     | 
    
         
            +
                  Dir.pwd
         
     | 
| 
      
 89 
     | 
    
         
            +
                elsif at_rails_root?
         
     | 
| 
      
 90 
     | 
    
         
            +
                  "../"
         
     | 
| 
      
 91 
     | 
    
         
            +
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
              end
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
              def rails_path(sub=nil)
         
     | 
| 
      
 95 
     | 
    
         
            +
                path = if at_rails_root?
         
     | 
| 
      
 96 
     | 
    
         
            +
                  Dir.pwd
         
     | 
| 
      
 97 
     | 
    
         
            +
                else
         
     | 
| 
      
 98 
     | 
    
         
            +
                  dir = Dir["**/bin/rails"]
         
     | 
| 
      
 99 
     | 
    
         
            +
                  if !dir.empty?
         
     | 
| 
      
 100 
     | 
    
         
            +
                    dir.first.split('/').first
         
     | 
| 
      
 101 
     | 
    
         
            +
                  end
         
     | 
| 
      
 102 
     | 
    
         
            +
                end
         
     | 
| 
      
 103 
     | 
    
         
            +
                path = File.join(path, sub) if sub
         
     | 
| 
      
 104 
     | 
    
         
            +
                path
         
     | 
| 
      
 105 
     | 
    
         
            +
              end
         
     | 
| 
      
 106 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,31 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # coding: utf-8
         
     | 
| 
      
 2 
     | 
    
         
            +
            $:.push File.expand_path('../lib', __FILE__)
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'spark_engine/version'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            Gem::Specification.new do |spec|
         
     | 
| 
      
 6 
     | 
    
         
            +
              spec.name          = 'spark_engine'
         
     | 
| 
      
 7 
     | 
    
         
            +
              spec.version       = SparkEngine::VERSION
         
     | 
| 
      
 8 
     | 
    
         
            +
              spec.authors       = ['Brandon Mathis']
         
     | 
| 
      
 9 
     | 
    
         
            +
              spec.email         = ['brandon@imathis.com']
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
              spec.summary       = %q{A design system framework for Rails (and humans).}
         
     | 
| 
      
 12 
     | 
    
         
            +
              spec.homepage      = 'https://github.com/imathis/spark'
         
     | 
| 
      
 13 
     | 
    
         
            +
              spec.license       = 'MIT'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              spec.files         = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
         
     | 
| 
      
 16 
     | 
    
         
            +
              spec.bindir        = 'bin'
         
     | 
| 
      
 17 
     | 
    
         
            +
              spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
         
     | 
| 
      
 18 
     | 
    
         
            +
              spec.require_paths = ['lib']
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
              spec.add_runtime_dependency 'sass', '~> 3.4'
         
     | 
| 
      
 21 
     | 
    
         
            +
              spec.add_runtime_dependency 'esvg', '~> 4.2'
         
     | 
| 
      
 22 
     | 
    
         
            +
              spec.add_runtime_dependency 'listen', '~> 3.0.0'
         
     | 
| 
      
 23 
     | 
    
         
            +
              spec.add_runtime_dependency 'block_helpers', '~> 0.3'
         
     | 
| 
      
 24 
     | 
    
         
            +
              spec.add_runtime_dependency 'colorize', '~> 0.8'
         
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_runtime_dependency 'bundler', '~> 1.10'
         
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_runtime_dependency 'autoprefixer-rails', '~> 9.0'
         
     | 
| 
      
 27 
     | 
    
         
            +
              spec.add_runtime_dependency 'rails', '>= 4.2', '< 6'
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              spec.add_development_dependency 'rake', '~> 10.0'
         
     | 
| 
      
 30 
     | 
    
         
            +
              spec.add_development_dependency 'pry-byebug'
         
     | 
| 
      
 31 
     | 
    
         
            +
            end
         
     |