stylus 1.0.0.beta → 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 +4 -4
 - data/CHANGELOG.md +1 -0
 - data/README.md +17 -7
 - data/lib/rails/generators/stylus/assets/assets_generator.rb +4 -4
 - data/lib/rails/generators/stylus/assets/templates/stylesheet.css.styl +1 -1
 - data/lib/stylus.rb +2 -2
 - data/lib/stylus/import_processor.rb +10 -2
 - data/lib/stylus/railtie.rb +3 -7
 - data/lib/stylus/runtime.rb +7 -8
 - data/lib/stylus/sprockets.rb +23 -9
 - data/lib/stylus/tilt.rb +2 -54
 - data/lib/stylus/tilt/rails.rb +51 -0
 - data/lib/stylus/tilt/stylus.rb +52 -0
 - data/lib/stylus/version.rb +1 -1
 - data/spec/generators/assets_generator_spec.rb +1 -1
 - data/spec/generators/controller_generator_spec.rb +2 -2
 - data/spec/generators/scaffold_generator_spec.rb +3 -3
 - data/spec/import_processor_spec.rb +26 -16
 - data/spec/rails_spec.rb +4 -5
 - data/spec/runtime_spec.rb +3 -3
 - data/spec/sprockets_spec.rb +17 -12
 - data/spec/stylus_spec.rb +47 -49
 - data/spec/support/generators/test_case.rb +2 -2
 - data/spec/support/helpers.rb +6 -1
 - data/spec/tilt/rails_spec.rb +64 -0
 - data/spec/tilt/stylus_spec.rb +24 -0
 - metadata +13 -12
 - data/spec/support/generators/tmp/app/controllers/posts_controller.rb +0 -2
 - data/spec/support/generators/tmp/app/helpers/posts_helper.rb +0 -2
 - data/spec/tilt_spec.rb +0 -26
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: aae79b1819cdb41d494c214ff4dcce6fc309b2b5
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: dd62bd41cf976f92c2e6a5a18948e9e306da3f53
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 2df912f5de8d59046f46cb1c3c2aeb32829f17e145f08bb5f8c70b6da51ce83d0cd0d47ca2c31207d22d33c563bee6a3ebae2df805e91a0cbf29ee7397a5607b
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: 04a96508add2597861566cabfe481d7e0f6b953a290cfb89e547bbe0fd9e46370f81a928aab3205a3546446c52772c0d8fb06f425b52b0bd653678102771208e
         
     | 
    
        data/CHANGELOG.md
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ### HEAD - 1.0.0
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            * Rails 4+ and Ruby 1.9.x/2.0.0 support.
         
     | 
| 
      
 4 
     | 
    
         
            +
            * Support for the `asset-path` and `asset-url` mixins, thanks to [@spilin](https://github.com/spilin).
         
     | 
| 
       4 
5 
     | 
    
         | 
| 
       5 
6 
     | 
    
         
             
            Please check [0-7-stable](https://github.com/lucasmazza/ruby-stylus/blob/0-7-stable/CHANGELOG.md) for previous changes.
         
     | 
    
        data/README.md
    CHANGED
    
    | 
         @@ -2,10 +2,22 @@ 
     | 
|
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            [](http://travis-ci.org/lucasmazza/ruby-stylus)
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
     | 
    
         
            -
            `stylus` is a bridge between your Ruby code and the [Stylus](https://github.com/LearnBoost/stylus) library that runs on [node.js](http://nodejs.org). It has support for  
     | 
| 
      
 5 
     | 
    
         
            +
            `stylus` is a bridge between your Ruby code and the [Stylus](https://github.com/LearnBoost/stylus) library that runs on [node.js](http://nodejs.org). It has support for Rails 4 applications. (if you are working with Rails 3, check the [0-7-stable](https://github.com/lucasmazza/ruby-stylus/tree/0-7-stable) branch.)
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
            ## Installation
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
      
 9 
     | 
    
         
            +
            If you have a `Gemfile`:
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
            ```
         
     | 
| 
      
 12 
     | 
    
         
            +
            gem 'stylus'
         
     | 
| 
      
 13 
     | 
    
         
            +
            ```
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            or if you don't have a Gemfile, install it in your system:
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            ```
         
     | 
| 
      
 18 
     | 
    
         
            +
            gem install stylus
         
     | 
| 
      
 19 
     | 
    
         
            +
            ```
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
       9 
21 
     | 
    
         
             
            Since version 0.3.0, the [stylus-source](https://github.com/railsjedi/ruby-stylus-source) packages the Stylus source into a Rubygem, so it will be available after installing this gem. The `ruby-source` version will follow the Stylus releases and their versions.
         
     | 
| 
       10 
22 
     | 
    
         | 
| 
       11 
23 
     | 
    
         
             
            You can replace the Stylus code by placing another version of Stylus on `./node_modules/stylus`, and it will be used instead of the version bundled inside the gem.
         
     | 
| 
         @@ -23,7 +35,7 @@ require 'stylus' 
     | 
|
| 
       23 
35 
     | 
    
         
             
            Stylus.compile(File.new('application.styl')) # returns the compiled stylesheet.
         
     | 
| 
       24 
36 
     | 
    
         | 
| 
       25 
37 
     | 
    
         
             
            # Use the :compress option, removing most newlines from the code.
         
     | 
| 
       26 
     | 
    
         
            -
            Stylus.compile(File.read('application.styl'), : 
     | 
| 
      
 38 
     | 
    
         
            +
            Stylus.compile(File.read('application.styl'), compress: true)
         
     | 
| 
       27 
39 
     | 
    
         | 
| 
       28 
40 
     | 
    
         
             
            # Or use the global compress flag
         
     | 
| 
       29 
41 
     | 
    
         
             
            Stylus.compress = true
         
     | 
| 
         @@ -40,9 +52,7 @@ Stylus.use :nib 
     | 
|
| 
       40 
52 
     | 
    
         
             
            # a `:filename` option so Stylus can locate your stylesheet for proper inspection.
         
     | 
| 
       41 
53 
     | 
    
         
             
            Stylus.debug = true
         
     | 
| 
       42 
54 
     | 
    
         
             
            ```
         
     | 
| 
       43 
     | 
    
         
            -
            ### With Rails  
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
       45 
     | 
    
         
            -
            First of all, remember to add `gem 'stylus'` to your Gemfile inside the `:assets` group, So Rails will require the gem according to your current environment - on production you should serve precompiled versions of your assets instead of compiling on the fly.
         
     | 
| 
      
 55 
     | 
    
         
            +
            ### With Rails and the Asset Pipeline.
         
     | 
| 
       46 
56 
     | 
    
         | 
| 
       47 
57 
     | 
    
         
             
            Adding `stylus` to your Gemfile should let you work with `.styl` files with the Rails 3.1 Pipeline. Any asset generated with `rails generate` will be created with a `.css.styl` extension.
         
     | 
| 
       48 
58 
     | 
    
         | 
| 
         @@ -116,7 +126,7 @@ map('/assets') { run assets.index } 
     | 
|
| 
       116 
126 
     | 
    
         
             
            [Stylus](https://github.com/LearnBoost/stylus) exposes a nice API to create plugins written on [node.js](http://nodejs.org), like [nib](https://github.com/visionmedia/nib). The installation process should be the same as described above for [Stylus](https://github.com/LearnBoost/stylus) (since they're all npm packages after all). You can hook them up on your Ruby code with `Stylus.use`:
         
     | 
| 
       117 
127 
     | 
    
         | 
| 
       118 
128 
     | 
    
         
             
            ```ruby
         
     | 
| 
       119 
     | 
    
         
            -
            Stylus.use :fingerprint, : 
     | 
| 
      
 129 
     | 
    
         
            +
            Stylus.use :fingerprint, literal: 'caa8c262e23268d2a7062c6217202343b84f472b'
         
     | 
| 
       120 
130 
     | 
    
         
             
            ```
         
     | 
| 
       121 
131 
     | 
    
         | 
| 
       122 
132 
     | 
    
         
             
            Will run something like this in JavaScript:
         
     | 
| 
         @@ -138,7 +148,7 @@ For more info about the [Stylus](https://github.com/LearnBoost/stylus) syntax an 
     | 
|
| 
       138 
148 
     | 
    
         | 
| 
       139 
149 
     | 
    
         
             
            (The MIT License)
         
     | 
| 
       140 
150 
     | 
    
         | 
| 
       141 
     | 
    
         
            -
            Copyright (c) 2012 Lucas Mazza <luc4smazza@gmail.com>
         
     | 
| 
      
 151 
     | 
    
         
            +
            Copyright (c) 2012-2013 Lucas Mazza <luc4smazza@gmail.com>
         
     | 
| 
       142 
152 
     | 
    
         | 
| 
       143 
153 
     | 
    
         
             
            Permission is hereby granted, free of charge, to any person obtaining
         
     | 
| 
       144 
154 
     | 
    
         
             
            a copy of this software and associated documentation files (the
         
     | 
| 
         @@ -1,13 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
      
 1 
     | 
    
         
            +
            require 'rails/generators/named_base'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            module Stylus
         
     | 
| 
       4 
4 
     | 
    
         
             
              module Generators
         
     | 
| 
       5 
5 
     | 
    
         
             
                class AssetsGenerator < ::Rails::Generators::NamedBase
         
     | 
| 
       6 
     | 
    
         
            -
                  source_root File.expand_path( 
     | 
| 
      
 6 
     | 
    
         
            +
                  source_root File.expand_path('../templates', __FILE__)
         
     | 
| 
       7 
7 
     | 
    
         | 
| 
       8 
8 
     | 
    
         
             
                  def copy_stylus
         
     | 
| 
       9 
     | 
    
         
            -
                    template  
     | 
| 
      
 9 
     | 
    
         
            +
                    template 'stylesheet.css.styl', File.join('app/assets/stylesheets', class_path, "#{file_name}.css.styl")
         
     | 
| 
       10 
10 
     | 
    
         
             
                  end
         
     | 
| 
       11 
11 
     | 
    
         
             
                end
         
     | 
| 
       12 
12 
     | 
    
         
             
              end
         
     | 
| 
       13 
     | 
    
         
            -
            end
         
     | 
| 
      
 13 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/stylus.rb
    CHANGED
    
    | 
         @@ -130,13 +130,13 @@ module Stylus 
     | 
|
| 
       130 
130 
     | 
    
         
             
                # Returns the default `Hash` of options:
         
     | 
| 
       131 
131 
     | 
    
         
             
                # the compress flag and the global load path.
         
     | 
| 
       132 
132 
     | 
    
         
             
                def defaults
         
     | 
| 
       133 
     | 
    
         
            -
                  { : 
     | 
| 
      
 133 
     | 
    
         
            +
                  { compress: self.compress?, paths: self.paths }
         
     | 
| 
       134 
134 
     | 
    
         
             
                end
         
     | 
| 
       135 
135 
     | 
    
         | 
| 
       136 
136 
     | 
    
         
             
                # Returns a Hash with the debug options to pass to
         
     | 
| 
       137 
137 
     | 
    
         
             
                # Stylus.
         
     | 
| 
       138 
138 
     | 
    
         
             
                def debug_options
         
     | 
| 
       139 
     | 
    
         
            -
                  { : 
     | 
| 
      
 139 
     | 
    
         
            +
                  { linenos: self.debug?, firebug: self.debug? }
         
     | 
| 
       140 
140 
     | 
    
         
             
                end
         
     | 
| 
       141 
141 
     | 
    
         | 
| 
       142 
142 
     | 
    
         
             
                # Return the gem version alongside with the current `Stylus` version of your system.
         
     | 
| 
         @@ -22,12 +22,20 @@ module Stylus 
     | 
|
| 
       22 
22 
     | 
    
         
             
                #
         
     | 
| 
       23 
23 
     | 
    
         
             
                # Returns the stylesheet content, unmodified.
         
     | 
| 
       24 
24 
     | 
    
         
             
                def evaluate(context, locals, &block)
         
     | 
| 
      
 25 
     | 
    
         
            +
                  return data unless stylus_file?(context)
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
       25 
27 
     | 
    
         
             
                  depend_on(context, data)
         
     | 
| 
       26 
28 
     | 
    
         
             
                  data
         
     | 
| 
       27 
29 
     | 
    
         
             
                end
         
     | 
| 
       28 
30 
     | 
    
         | 
| 
       29 
31 
     | 
    
         
             
                private
         
     | 
| 
       30 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
                # Internal: Returns true if the file being processed counts as a
         
     | 
| 
      
 34 
     | 
    
         
            +
                # Stylus file (That is, it has a .styl extension).
         
     | 
| 
      
 35 
     | 
    
         
            +
                def stylus_file?(context)
         
     | 
| 
      
 36 
     | 
    
         
            +
                  File.fnmatch('*.styl', file) || File.fnmatch('*.styl.*', file)
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
       31 
39 
     | 
    
         
             
                # Internal: Scan the stylesheet body, looking for '@import' calls to
         
     | 
| 
       32 
40 
     | 
    
         
             
                # declare them as a dependency on the context using 'depend_on' method.
         
     | 
| 
       33 
41 
     | 
    
         
             
                # This method will recursively scans all dependency to ensure that
         
     | 
| 
         @@ -51,10 +59,10 @@ module Stylus 
     | 
|
| 
       51 
59 
     | 
    
         
             
                #
         
     | 
| 
       52 
60 
     | 
    
         
             
                # Returns the resolved 'Asset' or nil if it can't be found.
         
     | 
| 
       53 
61 
     | 
    
         
             
                def resolve(context, path)
         
     | 
| 
       54 
     | 
    
         
            -
                  context.resolve(path, : 
     | 
| 
      
 62 
     | 
    
         
            +
                  context.resolve(path, content_type: 'text/css')
         
     | 
| 
       55 
63 
     | 
    
         
             
                rescue ::Sprockets::FileNotFound
         
     | 
| 
       56 
64 
     | 
    
         
             
                  begin
         
     | 
| 
       57 
     | 
    
         
            -
                    context.resolve(path + '/index', : 
     | 
| 
      
 65 
     | 
    
         
            +
                    context.resolve(path + '/index', content_type: 'text/css')
         
     | 
| 
       58 
66 
     | 
    
         
             
                  rescue
         
     | 
| 
       59 
67 
     | 
    
         
             
                    nil
         
     | 
| 
       60 
68 
     | 
    
         
             
                  end
         
     | 
    
        data/lib/stylus/railtie.rb
    CHANGED
    
    | 
         @@ -3,7 +3,7 @@ require 'stylus/sprockets' 
     | 
|
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         
             
            module Stylus
         
     | 
| 
       5 
5 
     | 
    
         
             
              # Internal: The Railtie responsible for integrate the Stylus library with
         
     | 
| 
       6 
     | 
    
         
            -
              # a Rails  
     | 
| 
      
 6 
     | 
    
         
            +
              # a Rails application.
         
     | 
| 
       7 
7 
     | 
    
         
             
              #
         
     | 
| 
       8 
8 
     | 
    
         
             
              # Some of the customizations of using Stylus alongside Rails:
         
     | 
| 
       9 
9 
     | 
    
         
             
              #
         
     | 
| 
         @@ -24,13 +24,9 @@ module Stylus 
     | 
|
| 
       24 
24 
     | 
    
         
             
                # both Stylus and the Sprockets instance that lives on 'app.assets'. The entire
         
     | 
| 
       25 
25 
     | 
    
         
             
                # configuration object will be passed along.
         
     | 
| 
       26 
26 
     | 
    
         
             
                #
         
     | 
| 
       27 
     | 
    
         
            -
                # If you don't have the Asset Pipeline enabled on your application - done by
         
     | 
| 
       28 
     | 
    
         
            -
                # setting the 'config.assets.enabled' flag to false, this setup process will be
         
     | 
| 
       29 
     | 
    
         
            -
                # skipped.
         
     | 
| 
       30 
     | 
    
         
            -
                #
         
     | 
| 
       31 
27 
     | 
    
         
             
                # Returns nothing.
         
     | 
| 
       32 
28 
     | 
    
         
             
                config.assets.configure do |env|
         
     | 
| 
       33 
     | 
    
         
            -
                  Stylus.setup(env, config.assets)
         
     | 
| 
      
 29 
     | 
    
         
            +
                  Stylus.setup(env, config.assets.merge(rails: true))
         
     | 
| 
       34 
30 
     | 
    
         
             
                end
         
     | 
| 
       35 
31 
     | 
    
         
             
              end
         
     | 
| 
       36 
     | 
    
         
            -
            end
         
     | 
| 
      
 32 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/stylus/runtime.rb
    CHANGED
    
    | 
         @@ -8,8 +8,7 @@ module Stylus 
     | 
|
| 
       8 
8 
     | 
    
         
             
                # Internal: Calls a specific function on the Node.JS context.
         
     | 
| 
       9 
9 
     | 
    
         
             
                #
         
     | 
| 
       10 
10 
     | 
    
         
             
                # Example
         
     | 
| 
       11 
     | 
    
         
            -
                #  exec('version', 2)
         
     | 
| 
       12 
     | 
    
         
            -
                #  # => "2"
         
     | 
| 
      
 11 
     | 
    
         
            +
                #  exec('version', 2) # => '2'
         
     | 
| 
       13 
12 
     | 
    
         
             
                #
         
     | 
| 
       14 
13 
     | 
    
         
             
                # Returns The function returned value.
         
     | 
| 
       15 
14 
     | 
    
         
             
                def exec(*arguments)
         
     | 
| 
         @@ -22,8 +21,8 @@ module Stylus 
     | 
|
| 
       22 
21 
     | 
    
         
             
                # if the runtime isn't available. Otherwise, this is a noop.
         
     | 
| 
       23 
22 
     | 
    
         
             
                def check_availability!
         
     | 
| 
       24 
23 
     | 
    
         
             
                  unless runtime.available?
         
     | 
| 
       25 
     | 
    
         
            -
                    message =  
     | 
| 
       26 
     | 
    
         
            -
                    message <<  
     | 
| 
      
 24 
     | 
    
         
            +
                    message = 'The Node.JS runtime is not available to Stylus.'
         
     | 
| 
      
 25 
     | 
    
         
            +
                    message << 'Ensure that the "node" (or "nodejs") executable is present in your $PATH.'
         
     | 
| 
       27 
26 
     | 
    
         
             
                    raise RuntimeError, message
         
     | 
| 
       28 
27 
     | 
    
         
             
                  end
         
     | 
| 
       29 
28 
     | 
    
         
             
                end
         
     | 
| 
         @@ -46,10 +45,10 @@ module Stylus 
     | 
|
| 
       46 
45 
     | 
    
         
             
                # any Node.JS program.
         
     | 
| 
       47 
46 
     | 
    
         
             
                def runtime
         
     | 
| 
       48 
47 
     | 
    
         
             
                  @runtime ||= ExecJS::ExternalRuntime.new(
         
     | 
| 
       49 
     | 
    
         
            -
                    : 
     | 
| 
       50 
     | 
    
         
            -
                    : 
     | 
| 
       51 
     | 
    
         
            -
                    : 
     | 
| 
      
 48 
     | 
    
         
            +
                    name:        'Node.js (V8)',
         
     | 
| 
      
 49 
     | 
    
         
            +
                    command:     ['nodejs', 'node'],
         
     | 
| 
      
 50 
     | 
    
         
            +
                    runner_path: File.expand_path('../runtime/runner.js', __FILE__)
         
     | 
| 
       52 
51 
     | 
    
         
             
                    )
         
     | 
| 
       53 
52 
     | 
    
         
             
                end
         
     | 
| 
       54 
53 
     | 
    
         
             
              end
         
     | 
| 
       55 
     | 
    
         
            -
            end
         
     | 
| 
      
 54 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/stylus/sprockets.rb
    CHANGED
    
    | 
         @@ -1,5 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'stylus'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'stylus/tilt'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'stylus/tilt/stylus'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'stylus/tilt/rails'
         
     | 
| 
       3 
4 
     | 
    
         
             
            require 'stylus/import_processor'
         
     | 
| 
       4 
5 
     | 
    
         
             
            # Public: The setup logic to configure both Stylus and Sprockets on any
         
     | 
| 
       5 
6 
     | 
    
         
             
            # kind of application - Rails, Sinatra or Rack.
         
     | 
| 
         @@ -18,27 +19,40 @@ module Stylus 
     | 
|
| 
       18 
19 
     | 
    
         
             
              #
         
     | 
| 
       19 
20 
     | 
    
         
             
              # environment - A instance of Sprockets::Environment.
         
     | 
| 
       20 
21 
     | 
    
         
             
              # options     - The configuration Hash (default: {})
         
     | 
| 
      
 22 
     | 
    
         
            +
              #             :rails - a flag to inform that the current application is a Rails app.
         
     | 
| 
       21 
23 
     | 
    
         
             
              #             :paths - An Array of paths to use the '@import' directive, defaults
         
     | 
| 
       22 
24 
     | 
    
         
             
              #                      to the `paths` attribute on the environment object.
         
     | 
| 
       23 
     | 
    
         
            -
              # 
     | 
| 
       24 
     | 
    
         
            -
              # 
     | 
| 
      
 25 
     | 
    
         
            +
              #             :debug - The Boolean value for the debug flag.
         
     | 
| 
      
 26 
     | 
    
         
            +
              #             :compress - The Boolean value for the debug compress.
         
     | 
| 
       25 
27 
     | 
    
         
             
              #
         
     | 
| 
       26 
28 
     | 
    
         
             
              # Example
         
     | 
| 
       27 
29 
     | 
    
         
             
              #
         
     | 
| 
       28 
30 
     | 
    
         
             
              #  assets = Sprockets::Environment.new
         
     | 
| 
       29 
     | 
    
         
            -
              #  Stylus.setup(assets, : 
     | 
| 
      
 31 
     | 
    
         
            +
              #  Stylus.setup(assets, compress: settings.production?)
         
     | 
| 
       30 
32 
     | 
    
         
             
              #
         
     | 
| 
       31 
33 
     | 
    
         
             
              # Returns nothing.
         
     | 
| 
       32 
34 
     | 
    
         
             
              def self.setup(environment, options = {})
         
     | 
| 
       33 
35 
     | 
    
         
             
                paths = options[:paths] || environment.paths
         
     | 
| 
       34 
     | 
    
         
            -
                directories = paths.select { |dir| dir.to_s =~ /stylesheets$/ }
         
     | 
| 
       35 
36 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                Stylus.paths.concat( 
     | 
| 
      
 37 
     | 
    
         
            +
                Stylus.paths.concat(paths)
         
     | 
| 
       37 
38 
     | 
    
         | 
| 
       38 
39 
     | 
    
         
             
                Stylus.debug = options.fetch(:debug, Stylus.debug)
         
     | 
| 
       39 
40 
     | 
    
         
             
                Stylus.compress = options.fetch(:compress, Stylus.compress)
         
     | 
| 
       40 
     | 
    
         
            -
             
     | 
| 
       41 
     | 
    
         
            -
                environment.register_engine('.styl',  
     | 
| 
      
 41 
     | 
    
         
            +
                template = detect_template_hander(options)
         
     | 
| 
      
 42 
     | 
    
         
            +
                environment.register_engine('.styl', template)
         
     | 
| 
       42 
43 
     | 
    
         
             
                environment.register_preprocessor('text/css', Stylus::ImportProcessor)
         
     | 
| 
       43 
44 
     | 
    
         
             
              end
         
     | 
| 
       44 
     | 
    
         
            -
             
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
              # Internal: Gets the desired Tilt template handler to the current configuration.
         
     | 
| 
      
 47 
     | 
    
         
            +
              # If a 'rails' option is present then the Rails specific template will be
         
     | 
| 
      
 48 
     | 
    
         
            +
              # returned instead of the default Stylus Tilt template.
         
     | 
| 
      
 49 
     | 
    
         
            +
              #
         
     | 
| 
      
 50 
     | 
    
         
            +
              # Returns a Tilt::Template children class.
         
     | 
| 
      
 51 
     | 
    
         
            +
              def self.detect_template_hander(options = {})
         
     | 
| 
      
 52 
     | 
    
         
            +
                if options[:rails]
         
     | 
| 
      
 53 
     | 
    
         
            +
                  Stylus::Rails::StylusTemplate
         
     | 
| 
      
 54 
     | 
    
         
            +
                else
         
     | 
| 
      
 55 
     | 
    
         
            +
                  Tilt::StylusTemplate
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
              end
         
     | 
| 
      
 58 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/stylus/tilt.rb
    CHANGED
    
    | 
         @@ -1,54 +1,2 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require  
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
            #
         
     | 
| 
       4 
     | 
    
         
            -
            # Examples
         
     | 
| 
       5 
     | 
    
         
            -
            #
         
     | 
| 
       6 
     | 
    
         
            -
            #  template = Tilt::StylusTemplate.new { |t| File.read('app.styl') }
         
     | 
| 
       7 
     | 
    
         
            -
            #  template.render
         
     | 
| 
       8 
     | 
    
         
            -
            #  # => the compiled CSS from the app.styl file.
         
     | 
| 
       9 
     | 
    
         
            -
            #
         
     | 
| 
       10 
     | 
    
         
            -
            #  Options should assigned on the template constructor.
         
     | 
| 
       11 
     | 
    
         
            -
            #  template = Tilt::StylusTemplate.new(:compress => true) { |t| File.read('app.styl') }
         
     | 
| 
       12 
     | 
    
         
            -
            #  template.render
         
     | 
| 
       13 
     | 
    
         
            -
            #  # => the compiled CSS with compression enabled.
         
     | 
| 
       14 
     | 
    
         
            -
            module Tilt
         
     | 
| 
       15 
     | 
    
         
            -
              class StylusTemplate < Template
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
                # Public: The default mime type for stylesheets.
         
     | 
| 
       18 
     | 
    
         
            -
                self.default_mime_type = 'text/css'
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
                # Internal: Checks if the Stylus module has been properly defined.
         
     | 
| 
       21 
     | 
    
         
            -
                #
         
     | 
| 
       22 
     | 
    
         
            -
                # Returns true if the 'Stylus' module is present.
         
     | 
| 
       23 
     | 
    
         
            -
                def self.engine_initialized?
         
     | 
| 
       24 
     | 
    
         
            -
                  defined? ::Stylus
         
     | 
| 
       25 
     | 
    
         
            -
                end
         
     | 
| 
       26 
     | 
    
         
            -
             
     | 
| 
       27 
     | 
    
         
            -
                # Internal: Require the 'stylus' file to load the Stylus module.
         
     | 
| 
       28 
     | 
    
         
            -
                #
         
     | 
| 
       29 
     | 
    
         
            -
                # Returns nothing.
         
     | 
| 
       30 
     | 
    
         
            -
                def initialize_engine
         
     | 
| 
       31 
     | 
    
         
            -
                  require_template_library 'stylus'
         
     | 
| 
       32 
     | 
    
         
            -
                end
         
     | 
| 
       33 
     | 
    
         
            -
             
     | 
| 
       34 
     | 
    
         
            -
                # Internal: Caches the filename as an option entry if it's present.
         
     | 
| 
       35 
     | 
    
         
            -
                #
         
     | 
| 
       36 
     | 
    
         
            -
                # Returns nothing.
         
     | 
| 
       37 
     | 
    
         
            -
                def prepare
         
     | 
| 
       38 
     | 
    
         
            -
                  if self.file
         
     | 
| 
       39 
     | 
    
         
            -
                    options[:filename] ||= self.file
         
     | 
| 
       40 
     | 
    
         
            -
                  end
         
     | 
| 
       41 
     | 
    
         
            -
                end
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                # Internal: Compile the template Stylus using this instance options.
         
     | 
| 
       44 
     | 
    
         
            -
                # The current 'scope' and given 'locals' are ignored and the output
         
     | 
| 
       45 
     | 
    
         
            -
                # is cached.
         
     | 
| 
       46 
     | 
    
         
            -
                #
         
     | 
| 
       47 
     | 
    
         
            -
                # Returns the compiled stylesheet with CSS syntax.
         
     | 
| 
       48 
     | 
    
         
            -
                def evaluate(scope, locals, &block)
         
     | 
| 
       49 
     | 
    
         
            -
                  @output ||= Stylus.compile(data, options)
         
     | 
| 
       50 
     | 
    
         
            -
                end
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
            end
         
     | 
| 
       53 
     | 
    
         
            -
             
     | 
| 
       54 
     | 
    
         
            -
            Tilt.register Tilt::StylusTemplate, 'styl'
         
     | 
| 
      
 1 
     | 
    
         
            +
            # require compatibility with older versions.
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'stylus/tilt/stylus'
         
     | 
| 
         @@ -0,0 +1,51 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'stylus/tilt/stylus'
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Public: A Tilt template to compile Stylus stylesheets with asset helpers.
         
     | 
| 
      
 3 
     | 
    
         
            +
            module Stylus
         
     | 
| 
      
 4 
     | 
    
         
            +
              module Rails
         
     | 
| 
      
 5 
     | 
    
         
            +
                class StylusTemplate < ::Tilt::StylusTemplate
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
                  # Public: The default mime type for stylesheets.
         
     | 
| 
      
 8 
     | 
    
         
            +
                  self.default_mime_type = 'text/css'
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  # Internal: Appends stylus mixin for asset_url and asset_path support
         
     | 
| 
      
 11 
     | 
    
         
            +
                  def evaluate(scope, locals, &block)
         
     | 
| 
      
 12 
     | 
    
         
            +
                    @data = build_mixin_body(scope) + data
         
     | 
| 
      
 13 
     | 
    
         
            +
                    super
         
     | 
| 
      
 14 
     | 
    
         
            +
                  end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                  protected
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                  # Internal: Builds body of a mixin
         
     | 
| 
      
 19 
     | 
    
         
            +
                  #
         
     | 
| 
      
 20 
     | 
    
         
            +
                  # Returns string representation of a mixin with asset helper functions
         
     | 
| 
      
 21 
     | 
    
         
            +
                  def build_mixin_body(scope)
         
     | 
| 
      
 22 
     | 
    
         
            +
                    @mixin_body ||= if assets_hash(scope).values.all? {|value| value != '' }
         
     | 
| 
      
 23 
     | 
    
         
            +
                                      <<-STYL
         
     | 
| 
      
 24 
     | 
    
         
            +
            asset-url(key)
         
     | 
| 
      
 25 
     | 
    
         
            +
              return pair[1] if pair[0] == key for pair in #{assets_hash(scope)[:url]} ()
         
     | 
| 
      
 26 
     | 
    
         
            +
            asset-path(key)
         
     | 
| 
      
 27 
     | 
    
         
            +
              return pair[1] if pair[0] == key for pair in #{assets_hash(scope)[:path]} ()
         
     | 
| 
      
 28 
     | 
    
         
            +
                                      STYL
         
     | 
| 
      
 29 
     | 
    
         
            +
                                    else
         
     | 
| 
      
 30 
     | 
    
         
            +
                                      ''
         
     | 
| 
      
 31 
     | 
    
         
            +
                                    end
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                  # Internal: Construct Hash with absolute/relative paths in stylus syntax.
         
     | 
| 
      
 35 
     | 
    
         
            +
                  #
         
     | 
| 
      
 36 
     | 
    
         
            +
                  # Returns string representations of hash in Stylus syntax
         
     | 
| 
      
 37 
     | 
    
         
            +
                  def assets_hash(scope)
         
     | 
| 
      
 38 
     | 
    
         
            +
                    @assets_hash ||= scope.environment.each_logical_path.each_with_object({ :url => '', :path => '' }) do |logical_path, assets_hash|
         
     | 
| 
      
 39 
     | 
    
         
            +
                      unless logical_path =~/.*\.(css|js)$/
         
     | 
| 
      
 40 
     | 
    
         
            +
                        path_to_asset = scope.path_to_asset(logical_path)
         
     | 
| 
      
 41 
     | 
    
         
            +
                        assets_hash[:url] << "('#{logical_path}' url(\"#{path_to_asset}\")) "
         
     | 
| 
      
 42 
     | 
    
         
            +
                        assets_hash[:path] << "('#{logical_path}' \"#{path_to_asset}\") "
         
     | 
| 
      
 43 
     | 
    
         
            +
                      end
         
     | 
| 
      
 44 
     | 
    
         
            +
                    end
         
     | 
| 
      
 45 
     | 
    
         
            +
                  end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
            end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            Tilt.register ::Stylus::Rails::StylusTemplate, 'styl'
         
     | 
| 
         @@ -0,0 +1,52 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'tilt'
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Public: A Tilt template to compile Stylus stylesheets.
         
     | 
| 
      
 3 
     | 
    
         
            +
            #
         
     | 
| 
      
 4 
     | 
    
         
            +
            # Examples
         
     | 
| 
      
 5 
     | 
    
         
            +
            #
         
     | 
| 
      
 6 
     | 
    
         
            +
            #  template = Tilt::StylusTemplate.new { |t| File.read('app.styl') }
         
     | 
| 
      
 7 
     | 
    
         
            +
            #  template.render # => the compiled CSS from the app.styl file.
         
     | 
| 
      
 8 
     | 
    
         
            +
            #
         
     | 
| 
      
 9 
     | 
    
         
            +
            #  Options should assigned on the template constructor.
         
     | 
| 
      
 10 
     | 
    
         
            +
            #  template = Tilt::StylusTemplate.new(compress: true) { |t| File.read('app.styl') }
         
     | 
| 
      
 11 
     | 
    
         
            +
            #  template.render # => the compiled CSS with compression enabled.
         
     | 
| 
      
 12 
     | 
    
         
            +
            module Tilt
         
     | 
| 
      
 13 
     | 
    
         
            +
              class StylusTemplate < Template
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                # Public: The default mime type for stylesheets.
         
     | 
| 
      
 16 
     | 
    
         
            +
                self.default_mime_type = 'text/css'
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                # Internal: Checks if the Stylus module has been properly defined.
         
     | 
| 
      
 19 
     | 
    
         
            +
                #
         
     | 
| 
      
 20 
     | 
    
         
            +
                # Returns true if the 'Stylus' module is present.
         
     | 
| 
      
 21 
     | 
    
         
            +
                def self.engine_initialized?
         
     | 
| 
      
 22 
     | 
    
         
            +
                  defined? ::Stylus
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                # Internal: Require the 'stylus' file to load the Stylus module.
         
     | 
| 
      
 26 
     | 
    
         
            +
                #
         
     | 
| 
      
 27 
     | 
    
         
            +
                # Returns nothing.
         
     | 
| 
      
 28 
     | 
    
         
            +
                def initialize_engine
         
     | 
| 
      
 29 
     | 
    
         
            +
                  require_template_library 'stylus'
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
                # Internal: Caches the filename as an option entry if it's present.
         
     | 
| 
      
 33 
     | 
    
         
            +
                #
         
     | 
| 
      
 34 
     | 
    
         
            +
                # Returns nothing.
         
     | 
| 
      
 35 
     | 
    
         
            +
                def prepare
         
     | 
| 
      
 36 
     | 
    
         
            +
                  if self.file
         
     | 
| 
      
 37 
     | 
    
         
            +
                    options[:filename] ||= self.file
         
     | 
| 
      
 38 
     | 
    
         
            +
                  end
         
     | 
| 
      
 39 
     | 
    
         
            +
                end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
                # Internal: Compile the template Stylus using this instance options.
         
     | 
| 
      
 42 
     | 
    
         
            +
                # The current 'scope' and given 'locals' are ignored and the output
         
     | 
| 
      
 43 
     | 
    
         
            +
                # is cached.
         
     | 
| 
      
 44 
     | 
    
         
            +
                #
         
     | 
| 
      
 45 
     | 
    
         
            +
                # Returns a String with the compiled stylesheet with CSS syntax.
         
     | 
| 
      
 46 
     | 
    
         
            +
                def evaluate(scope, locals, &block)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  @output ||= Stylus.compile(data, options)
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
              end
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
            Tilt.register Tilt::StylusTemplate, 'styl'
         
     | 
    
        data/lib/stylus/version.rb
    CHANGED
    
    
| 
         @@ -7,6 +7,6 @@ describe Rails::Generators::ControllerGenerator do 
     | 
|
| 
       7 
7 
     | 
    
         
             
              arguments  %w(posts --stylesheet-engine=stylus)
         
     | 
| 
       8 
8 
     | 
    
         | 
| 
       9 
9 
     | 
    
         
             
              it 'generates a .styl file' do
         
     | 
| 
       10 
     | 
    
         
            -
                file('app/assets/stylesheets/posts.css.styl'). 
     | 
| 
      
 10 
     | 
    
         
            +
                expect(file('app/assets/stylesheets/posts.css.styl')).to exist
         
     | 
| 
       11 
11 
     | 
    
         
             
              end
         
     | 
| 
       12 
     | 
    
         
            -
            end
         
     | 
| 
      
 12 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -8,10 +8,10 @@ describe Rails::Generators::ScaffoldGenerator do 
     | 
|
| 
       8 
8 
     | 
    
         
             
              arguments  %w(posts --stylesheet-engine=stylus --orm=false)
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
       10 
10 
     | 
    
         
             
              it 'generates the default scaffold stylesheet' do
         
     | 
| 
       11 
     | 
    
         
            -
                file('app/assets/stylesheets/scaffold.css'). 
     | 
| 
      
 11 
     | 
    
         
            +
                expect(file('app/assets/stylesheets/scaffold.css')).to exist
         
     | 
| 
       12 
12 
     | 
    
         
             
              end
         
     | 
| 
       13 
13 
     | 
    
         | 
| 
       14 
14 
     | 
    
         
             
              it 'generates a named .styl file' do
         
     | 
| 
       15 
     | 
    
         
            -
                file('app/assets/stylesheets/posts.css.styl'). 
     | 
| 
      
 15 
     | 
    
         
            +
                expect(file('app/assets/stylesheets/posts.css.styl')).to exist
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
     | 
    
         
            -
            end
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -12,43 +12,53 @@ describe Stylus::ImportProcessor do 
     | 
|
| 
       12 
12 
     | 
    
         
             
                asset = env['import']
         
     | 
| 
       13 
13 
     | 
    
         
             
                dependencies = dependencies_on(asset)
         
     | 
| 
       14 
14 
     | 
    
         | 
| 
       15 
     | 
    
         
            -
                dependencies. 
     | 
| 
      
 15 
     | 
    
         
            +
                expect(dependencies).to include(fixture_path('mixins/vendor'))
         
     | 
| 
       16 
16 
     | 
    
         
             
              end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
     | 
    
         
            -
              context  
     | 
| 
      
 18 
     | 
    
         
            +
              context 'nested dependencies' do
         
     | 
| 
       19 
19 
     | 
    
         
             
                it 'walks the dependency chain of imported files' do
         
     | 
| 
       20 
20 
     | 
    
         
             
                  asset = env['nested_import']
         
     | 
| 
       21 
21 
     | 
    
         
             
                  dependencies = dependencies_on(asset)
         
     | 
| 
       22 
22 
     | 
    
         | 
| 
       23 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       24 
     | 
    
         
            -
                  dependencies. 
     | 
| 
      
 23 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('mixins/nested'))
         
     | 
| 
      
 24 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('mixins/vendor'))
         
     | 
| 
       25 
25 
     | 
    
         
             
                end
         
     | 
| 
       26 
26 
     | 
    
         | 
| 
       27 
27 
     | 
    
         
             
                it "adds files referenced in a directory's index file" do
         
     | 
| 
       28 
28 
     | 
    
         
             
                  asset = env['indexed_nested_import']
         
     | 
| 
       29 
29 
     | 
    
         
             
                  dependencies = dependencies_on(asset)
         
     | 
| 
       30 
30 
     | 
    
         | 
| 
       31 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       32 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       33 
     | 
    
         
            -
                  dependencies. 
     | 
| 
      
 31 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/index'))
         
     | 
| 
      
 32 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/first_dep'))
         
     | 
| 
      
 33 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/second_dep'))
         
     | 
| 
       34 
34 
     | 
    
         
             
                end
         
     | 
| 
       35 
35 
     | 
    
         | 
| 
       36 
     | 
    
         
            -
                it  
     | 
| 
      
 36 
     | 
    
         
            +
                it 'walks dependency chains through indexes' do
         
     | 
| 
       37 
37 
     | 
    
         
             
                  asset = env['indexed_recursive_import']
         
     | 
| 
       38 
38 
     | 
    
         
             
                  dependencies = dependencies_on(asset)
         
     | 
| 
       39 
39 
     | 
    
         | 
| 
       40 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       41 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       42 
     | 
    
         
            -
                  dependencies. 
     | 
| 
       43 
     | 
    
         
            -
                  dependencies. 
     | 
| 
      
 40 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed_nested_import'))
         
     | 
| 
      
 41 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/index'))
         
     | 
| 
      
 42 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/first_dep'))
         
     | 
| 
      
 43 
     | 
    
         
            +
                  expect(dependencies).to include(fixture_path('indexed/second_dep'))
         
     | 
| 
       44 
44 
     | 
    
         
             
                end
         
     | 
| 
       45 
45 
     | 
    
         
             
              end
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
     | 
    
         
            -
              it  
     | 
| 
       48 
     | 
    
         
            -
                source =  
     | 
| 
      
 47 
     | 
    
         
            +
              it 'does not process non-stylus files' do
         
     | 
| 
      
 48 
     | 
    
         
            +
                source = '@import "nib"'
         
     | 
| 
      
 49 
     | 
    
         
            +
                template = Stylus::ImportProcessor.new('stylesheet.scss') { source }
         
     | 
| 
      
 50 
     | 
    
         
            +
                context = double
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
      
 52 
     | 
    
         
            +
                expect(context).to_not receive(:depend_on)
         
     | 
| 
      
 53 
     | 
    
         
            +
                template.render(context)
         
     | 
| 
      
 54 
     | 
    
         
            +
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              it 'swallows errors from files outside the Sprockets paths' do
         
     | 
| 
      
 57 
     | 
    
         
            +
                source = '@import "nib"'
         
     | 
| 
       49 
58 
     | 
    
         
             
                template = Stylus::ImportProcessor.new { source }
         
     | 
| 
       50 
     | 
    
         
            -
                sprockets = double 
     | 
| 
       51 
     | 
    
         
            -
                sprockets. 
     | 
| 
      
 59 
     | 
    
         
            +
                sprockets = double
         
     | 
| 
      
 60 
     | 
    
         
            +
                expect(sprockets).to receive(:resolve).twice.and_raise(::Sprockets::FileNotFound)
         
     | 
| 
      
 61 
     | 
    
         
            +
                expect(template).to receive(:stylus_file?).and_return(true)
         
     | 
| 
       52 
62 
     | 
    
         | 
| 
       53 
63 
     | 
    
         
             
                expect {
         
     | 
| 
       54 
64 
     | 
    
         
             
                  template.render(sprockets)
         
     | 
    
        data/spec/rails_spec.rb
    CHANGED
    
    | 
         @@ -1,11 +1,10 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe 'Rails integration' do
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
              it "copies the folders ending with 'stylesheets' from the Sprockets load path" do
         
     | 
| 
      
 4 
     | 
    
         
            +
              it "copies all folders from the Sprockets load path" do
         
     | 
| 
       6 
5 
     | 
    
         
             
                app = create_app
         
     | 
| 
       7 
     | 
    
         
            -
                Stylus.paths.should  
     | 
| 
       8 
     | 
    
         
            -
                Stylus.paths. 
     | 
| 
      
 6 
     | 
    
         
            +
                Stylus.paths.should include fixture_root
         
     | 
| 
      
 7 
     | 
    
         
            +
                Stylus.paths.should == app.assets.paths
         
     | 
| 
       9 
8 
     | 
    
         
             
              end
         
     | 
| 
       10 
9 
     | 
    
         | 
| 
       11 
10 
     | 
    
         
             
              it 'process .styl files with the asset pipeline' do
         
     | 
| 
         @@ -44,4 +43,4 @@ describe 'Rails integration' do 
     | 
|
| 
       44 
43 
     | 
    
         
             
              it 'loads the app normally even when the asset pipeline is disabled' do
         
     | 
| 
       45 
44 
     | 
    
         
             
                pending "TODO: supress the sprockets-rails railtie to test this."
         
     | 
| 
       46 
45 
     | 
    
         
             
              end
         
     | 
| 
       47 
     | 
    
         
            -
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/runtime_spec.rb
    CHANGED
    
    | 
         @@ -1,11 +1,11 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe Stylus::Runtime do
         
     | 
| 
       4 
     | 
    
         
            -
              it  
     | 
| 
       5 
     | 
    
         
            -
                Stylus. 
     | 
| 
      
 4 
     | 
    
         
            +
              it 'raises an error if the runtime is not available' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                allow(Stylus).to receive(:runtime) { double('An unavailable Runtime', available?: false) }
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
       7 
7 
     | 
    
         
             
                expect {
         
     | 
| 
       8 
8 
     | 
    
         
             
                  Stylus.version
         
     | 
| 
       9 
     | 
    
         
            -
                }.to raise_error RuntimeError, %r[The Node.JS runtime  
     | 
| 
      
 9 
     | 
    
         
            +
                }.to raise_error RuntimeError, %r[The Node.JS runtime is not available to Stylus.]
         
     | 
| 
       10 
10 
     | 
    
         
             
              end
         
     | 
| 
       11 
11 
     | 
    
         
             
            end
         
     | 
    
        data/spec/sprockets_spec.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            describe  
     | 
| 
      
 3 
     | 
    
         
            +
            describe 'Sprockets setup' do
         
     | 
| 
       4 
4 
     | 
    
         
             
              let(:env) do
         
     | 
| 
       5 
5 
     | 
    
         
             
                Sprockets::Environment.new do |assets|
         
     | 
| 
       6 
6 
     | 
    
         
             
                  assets.append_path fixture_root
         
     | 
| 
         @@ -8,24 +8,29 @@ describe "Sprockets setup" do 
     | 
|
| 
       8 
8 
     | 
    
         
             
                end
         
     | 
| 
       9 
9 
     | 
    
         
             
              end
         
     | 
| 
       10 
10 
     | 
    
         | 
| 
       11 
     | 
    
         
            -
              it  
     | 
| 
       12 
     | 
    
         
            -
                env. 
     | 
| 
      
 11 
     | 
    
         
            +
              it 'register the default Tilt template' do
         
     | 
| 
      
 12 
     | 
    
         
            +
                expect(env).to receive(:register_engine).with('.styl', Tilt::StylusTemplate)
         
     | 
| 
       13 
13 
     | 
    
         
             
                Stylus.setup(env)
         
     | 
| 
       14 
14 
     | 
    
         
             
              end
         
     | 
| 
       15 
15 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              it  
     | 
| 
       17 
     | 
    
         
            -
                env. 
     | 
| 
      
 16 
     | 
    
         
            +
              it 'register a Rails specific Tilt template' do
         
     | 
| 
      
 17 
     | 
    
         
            +
                expect(env).to receive(:register_engine).with('.styl', Stylus::Rails::StylusTemplate)
         
     | 
| 
      
 18 
     | 
    
         
            +
                Stylus.setup(env, rails: true)
         
     | 
| 
      
 19 
     | 
    
         
            +
              end
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
              it 'register the import processor' do
         
     | 
| 
      
 22 
     | 
    
         
            +
                expect(env).to receive(:register_preprocessor).with('text/css', Stylus::ImportProcessor)
         
     | 
| 
       18 
23 
     | 
    
         
             
                Stylus.setup(env)
         
     | 
| 
       19 
24 
     | 
    
         
             
              end
         
     | 
| 
       20 
25 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
              it  
     | 
| 
      
 26 
     | 
    
         
            +
              it 'copies the asset paths' do
         
     | 
| 
       22 
27 
     | 
    
         
             
                Stylus.setup(env)
         
     | 
| 
       23 
     | 
    
         
            -
                Stylus.paths. 
     | 
| 
      
 28 
     | 
    
         
            +
                expect(Stylus.paths).to eq(env.paths)
         
     | 
| 
       24 
29 
     | 
    
         
             
              end
         
     | 
| 
       25 
30 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
              it  
     | 
| 
       27 
     | 
    
         
            -
                Stylus.setup(env, : 
     | 
| 
       28 
     | 
    
         
            -
                Stylus.debug. 
     | 
| 
       29 
     | 
    
         
            -
                Stylus.compress. 
     | 
| 
      
 31 
     | 
    
         
            +
              it 'configure the debug and compress flags' do
         
     | 
| 
      
 32 
     | 
    
         
            +
                Stylus.setup(env, debug: true, compress: true)
         
     | 
| 
      
 33 
     | 
    
         
            +
                expect(Stylus.debug).to be_true
         
     | 
| 
      
 34 
     | 
    
         
            +
                expect(Stylus.compress).to be_true
         
     | 
| 
       30 
35 
     | 
    
         
             
              end
         
     | 
| 
       31 
     | 
    
         
            -
            end
         
     | 
| 
      
 36 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/stylus_spec.rb
    CHANGED
    
    | 
         @@ -1,103 +1,101 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'spec_helper'
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
3 
     | 
    
         
             
            describe Stylus do
         
     | 
| 
       4 
     | 
    
         
            -
             
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
                input 
     | 
| 
       7 
     | 
    
         
            -
                Stylus.compile(input).should == output
         
     | 
| 
      
 4 
     | 
    
         
            +
              it 'compiles the given source' do
         
     | 
| 
      
 5 
     | 
    
         
            +
                input, output = fixture(:simple)
         
     | 
| 
      
 6 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       8 
7 
     | 
    
         
             
              end
         
     | 
| 
       9 
8 
     | 
    
         | 
| 
       10 
     | 
    
         
            -
              it  
     | 
| 
       11 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
      
 9 
     | 
    
         
            +
              it 'accepts an IO object' do
         
     | 
| 
      
 10 
     | 
    
         
            +
                input, output = fixture(:simple)
         
     | 
| 
       12 
11 
     | 
    
         
             
                input = StringIO.new(input)
         
     | 
| 
       13 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 12 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       14 
13 
     | 
    
         
             
              end
         
     | 
| 
       15 
14 
     | 
    
         | 
| 
       16 
     | 
    
         
            -
              it  
     | 
| 
       17 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       18 
     | 
    
         
            -
                Stylus.compile(input, : 
     | 
| 
      
 15 
     | 
    
         
            +
              it 'compress the file when the "compress" flag is given' do
         
     | 
| 
      
 16 
     | 
    
         
            +
                input, output = fixture(:compressed)
         
     | 
| 
      
 17 
     | 
    
         
            +
                expect(Stylus.compile(input, compress: true)).to eq(output)
         
     | 
| 
       19 
18 
     | 
    
         
             
              end
         
     | 
| 
       20 
19 
     | 
    
         | 
| 
       21 
     | 
    
         
            -
              it  
     | 
| 
      
 20 
     | 
    
         
            +
              it 'handles the compress flag globally' do
         
     | 
| 
       22 
21 
     | 
    
         
             
                Stylus.compress = true
         
     | 
| 
       23 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       24 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 22 
     | 
    
         
            +
                input, output = fixture(:compressed)
         
     | 
| 
      
 23 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       25 
24 
     | 
    
         
             
              end
         
     | 
| 
       26 
25 
     | 
    
         | 
| 
       27 
     | 
    
         
            -
              it  
     | 
| 
      
 26 
     | 
    
         
            +
              it 'imports the given paths' do
         
     | 
| 
       28 
27 
     | 
    
         
             
                path = fixture_root
         
     | 
| 
       29 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       30 
     | 
    
         
            -
                Stylus.compile(input, : 
     | 
| 
      
 28 
     | 
    
         
            +
                input, output = fixture(:import)
         
     | 
| 
      
 29 
     | 
    
         
            +
                expect(Stylus.compile(input, paths: path)).to eq(output)
         
     | 
| 
       31 
30 
     | 
    
         
             
              end
         
     | 
| 
       32 
31 
     | 
    
         | 
| 
       33 
     | 
    
         
            -
              it  
     | 
| 
      
 32 
     | 
    
         
            +
              it 'handles the import paths globally' do
         
     | 
| 
       34 
33 
     | 
    
         
             
                Stylus.paths << fixture_root
         
     | 
| 
       35 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       36 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 34 
     | 
    
         
            +
                input, output = fixture(:import)
         
     | 
| 
      
 35 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       37 
36 
     | 
    
         
             
              end
         
     | 
| 
       38 
37 
     | 
    
         | 
| 
       39 
38 
     | 
    
         
             
              it 'implicit imports the given paths' do
         
     | 
| 
       40 
39 
     | 
    
         
             
                path = File.expand_path('mixins/vendor.styl', fixture_root)
         
     | 
| 
       41 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
      
 40 
     | 
    
         
            +
                input, output = fixture(:implicit)
         
     | 
| 
       42 
41 
     | 
    
         
             
                Stylus.import path
         
     | 
| 
       43 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 42 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       44 
43 
     | 
    
         
             
              end
         
     | 
| 
       45 
44 
     | 
    
         | 
| 
       46 
     | 
    
         
            -
              it  
     | 
| 
       47 
     | 
    
         
            -
                Stylus.version. 
     | 
| 
      
 45 
     | 
    
         
            +
              it 'outputs both gem and library version' do
         
     | 
| 
      
 46 
     | 
    
         
            +
                expect(Stylus.version).to match(/Stylus - gem .+ library .+/)
         
     | 
| 
       48 
47 
     | 
    
         
             
              end
         
     | 
| 
       49 
48 
     | 
    
         | 
| 
       50 
     | 
    
         
            -
              it  
     | 
| 
       51 
     | 
    
         
            -
                stylus, css = fixture 
     | 
| 
       52 
     | 
    
         
            -
                Stylus.convert(css). 
     | 
| 
      
 49 
     | 
    
         
            +
              it 'converts CSS to Stylus' do
         
     | 
| 
      
 50 
     | 
    
         
            +
                stylus, css = fixture(:stylesheet)
         
     | 
| 
      
 51 
     | 
    
         
            +
                expect(Stylus.convert(css)).to eq(stylus)
         
     | 
| 
       53 
52 
     | 
    
         
             
              end
         
     | 
| 
       54 
53 
     | 
    
         | 
| 
       55 
     | 
    
         
            -
              it  
     | 
| 
       56 
     | 
    
         
            -
                Stylus.use :one, :two, : 
     | 
| 
       57 
     | 
    
         
            -
                Stylus. 
     | 
| 
      
 54 
     | 
    
         
            +
              it 'stores the given plugins' do
         
     | 
| 
      
 55 
     | 
    
         
            +
                Stylus.use :one, :two, argument: true
         
     | 
| 
      
 56 
     | 
    
         
            +
                expect(Stylus).to have(2).plugins
         
     | 
| 
       58 
57 
     | 
    
         
             
              end
         
     | 
| 
       59 
58 
     | 
    
         | 
| 
       60 
     | 
    
         
            -
              it  
     | 
| 
      
 59 
     | 
    
         
            +
              it 'includes the given plugins' do
         
     | 
| 
       61 
60 
     | 
    
         
             
                Stylus.use :nib
         
     | 
| 
       62 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       63 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 61 
     | 
    
         
            +
                input, output = fixture(:plugin)
         
     | 
| 
      
 62 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       64 
63 
     | 
    
         
             
              end
         
     | 
| 
       65 
64 
     | 
    
         | 
| 
       66 
     | 
    
         
            -
              it  
     | 
| 
      
 65 
     | 
    
         
            +
              it 'includes and imports "nib" automatically' do
         
     | 
| 
       67 
66 
     | 
    
         
             
                Stylus.nib = true
         
     | 
| 
       68 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
       69 
     | 
    
         
            -
                Stylus.compile(input). 
     | 
| 
      
 67 
     | 
    
         
            +
                input, output = fixture(:nib)
         
     | 
| 
      
 68 
     | 
    
         
            +
                expect(Stylus.compile(input)).to eq(output)
         
     | 
| 
       70 
69 
     | 
    
         
             
              end
         
     | 
| 
       71 
70 
     | 
    
         | 
| 
       72 
     | 
    
         
            -
              it  
     | 
| 
       73 
     | 
    
         
            -
                input, output = fixture 
     | 
| 
      
 71 
     | 
    
         
            +
              it 'share variables between imported stylesheets' do
         
     | 
| 
      
 72 
     | 
    
         
            +
                input, output = fixture(:variables)
         
     | 
| 
       74 
73 
     | 
    
         
             
                path = fixture_root
         
     | 
| 
       75 
74 
     | 
    
         | 
| 
       76 
     | 
    
         
            -
                Stylus.compile(input, : 
     | 
| 
      
 75 
     | 
    
         
            +
                expect(Stylus.compile(input, paths: path)).to eq(output)
         
     | 
| 
       77 
76 
     | 
    
         
             
              end
         
     | 
| 
       78 
77 
     | 
    
         | 
| 
       79 
     | 
    
         
            -
              describe  
     | 
| 
       80 
     | 
    
         
            -
             
     | 
| 
      
 78 
     | 
    
         
            +
              describe 'The debug flag' do
         
     | 
| 
       81 
79 
     | 
    
         
             
                let(:path) { fixture_path(:debug) }
         
     | 
| 
       82 
80 
     | 
    
         
             
                let(:fixture) { File.read(path) }
         
     | 
| 
       83 
81 
     | 
    
         
             
                let(:file) { File.new(path) }
         
     | 
| 
       84 
82 
     | 
    
         | 
| 
       85 
83 
     | 
    
         
             
                before { Stylus.debug = true }
         
     | 
| 
       86 
84 
     | 
    
         | 
| 
       87 
     | 
    
         
            -
                it  
     | 
| 
       88 
     | 
    
         
            -
                  Stylus.compile(file). 
     | 
| 
      
 85 
     | 
    
         
            +
                it 'turns the "linenos" option on' do
         
     | 
| 
      
 86 
     | 
    
         
            +
                  expect(Stylus.compile(file)).to match(/line 1 : #{path}/)
         
     | 
| 
       89 
87 
     | 
    
         
             
                end
         
     | 
| 
       90 
88 
     | 
    
         | 
| 
       91 
     | 
    
         
            -
                it  
     | 
| 
       92 
     | 
    
         
            -
                  Stylus.compile(fixture). 
     | 
| 
      
 89 
     | 
    
         
            +
                it 'skips the "linenos" option if no filename is given' do
         
     | 
| 
      
 90 
     | 
    
         
            +
                  expect(Stylus.compile(fixture)).to_not match(/line 1 : #{path}/)
         
     | 
| 
       93 
91 
     | 
    
         
             
                end
         
     | 
| 
       94 
92 
     | 
    
         | 
| 
       95 
     | 
    
         
            -
                it  
     | 
| 
       96 
     | 
    
         
            -
                  Stylus.compile(file). 
     | 
| 
      
 93 
     | 
    
         
            +
                it 'turns the "firebug" option on' do
         
     | 
| 
      
 94 
     | 
    
         
            +
                  expect(Stylus.compile(file)).to match(/@media -stylus-debug-info/)
         
     | 
| 
       97 
95 
     | 
    
         
             
                end
         
     | 
| 
       98 
96 
     | 
    
         | 
| 
       99 
     | 
    
         
            -
                it  
     | 
| 
       100 
     | 
    
         
            -
                  Stylus.compile(fixture). 
     | 
| 
      
 97 
     | 
    
         
            +
                it 'skips the "firebug" option if no filename is given' do
         
     | 
| 
      
 98 
     | 
    
         
            +
                  expect(Stylus.compile(fixture)).to_not match(/@media -stylus-debug-info/)
         
     | 
| 
       101 
99 
     | 
    
         
             
                end
         
     | 
| 
       102 
100 
     | 
    
         
             
              end
         
     | 
| 
       103 
     | 
    
         
            -
            end
         
     | 
| 
      
 101 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -23,7 +23,7 @@ module Generators 
     | 
|
| 
       23 
23 
     | 
    
         
             
                    run_generator
         
     | 
| 
       24 
24 
     | 
    
         
             
                  end
         
     | 
| 
       25 
25 
     | 
    
         | 
| 
       26 
     | 
    
         
            -
                  destination File.expand_path( 
     | 
| 
      
 26 
     | 
    
         
            +
                  destination File.expand_path('../tmp', __FILE__)
         
     | 
| 
       27 
27 
     | 
    
         
             
                end
         
     | 
| 
       28 
28 
     | 
    
         | 
| 
       29 
29 
     | 
    
         
             
                module ClassMethods
         
     | 
| 
         @@ -56,4 +56,4 @@ module Generators 
     | 
|
| 
       56 
56 
     | 
    
         
             
                  end
         
     | 
| 
       57 
57 
     | 
    
         
             
                end
         
     | 
| 
       58 
58 
     | 
    
         
             
              end
         
     | 
| 
       59 
     | 
    
         
            -
            end
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
    
        data/spec/support/helpers.rb
    CHANGED
    
    | 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            module Helpers
         
     | 
| 
       2 
2 
     | 
    
         
             
              def create_routes
         
     | 
| 
       3 
     | 
    
         
            -
                destination = File.join(destination_root,  
     | 
| 
      
 3 
     | 
    
         
            +
                destination = File.join(destination_root, 'config')
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
                FileUtils.mkdir_p(destination)
         
     | 
| 
       6 
6 
     | 
    
         
             
                FileUtils.touch File.join(destination, 'routes.rb')
         
     | 
| 
         @@ -19,6 +19,7 @@ module Helpers 
     | 
|
| 
       19 
19 
     | 
    
         
             
                  config.debug    = options[:debug]
         
     | 
| 
       20 
20 
     | 
    
         
             
                  config.paths << fixture_root
         
     | 
| 
       21 
21 
     | 
    
         
             
                  config.paths << File.expand_path('javascripts')
         
     | 
| 
      
 22 
     | 
    
         
            +
                  yield(app) if block_given?
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
       23 
24 
     | 
    
         
             
                  app.config.eager_load = false
         
     | 
| 
       24 
25 
     | 
    
         
             
                  app.config.active_support.deprecation = :log
         
     | 
| 
         @@ -30,6 +31,10 @@ module Helpers 
     | 
|
| 
       30 
31 
     | 
    
         
             
                File.expand_path('../../stylesheets', __FILE__)
         
     | 
| 
       31 
32 
     | 
    
         
             
              end
         
     | 
| 
       32 
33 
     | 
    
         | 
| 
      
 34 
     | 
    
         
            +
              def images_root
         
     | 
| 
      
 35 
     | 
    
         
            +
                File.expand_path('../../images', __FILE__)
         
     | 
| 
      
 36 
     | 
    
         
            +
              end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
       33 
38 
     | 
    
         
             
              def output_root
         
     | 
| 
       34 
39 
     | 
    
         
             
                File.expand_path('../../cases', __FILE__)
         
     | 
| 
       35 
40 
     | 
    
         
             
              end
         
     | 
| 
         @@ -0,0 +1,64 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'stylus/tilt/rails'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Stylus::Rails::StylusTemplate do
         
     | 
| 
      
 5 
     | 
    
         
            +
              it 'registers the template for .styl files' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                expect(Tilt['application.styl']).to eq(Stylus::Rails::StylusTemplate)
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              it 'has a content-type' do
         
     | 
| 
      
 10 
     | 
    
         
            +
                expect(Stylus::Rails::StylusTemplate.default_mime_type).to eq('text/css')
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              context 'when no resources other then css found' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                it 'compiles the given source without changes' do
         
     | 
| 
      
 15 
     | 
    
         
            +
                  result = fixture(:simple).last
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                  app = create_app
         
     | 
| 
      
 18 
     | 
    
         
            +
                  expect(app.assets['simple'].to_s).to eq(result)
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              it 'substitutes asset_path with path' do
         
     | 
| 
      
 24 
     | 
    
         
            +
                app = create_app do |app|
         
     | 
| 
      
 25 
     | 
    
         
            +
                  app.config.assets.paths << images_root
         
     | 
| 
      
 26 
     | 
    
         
            +
                  app.config.asset_host = 'http://localhost'
         
     | 
| 
      
 27 
     | 
    
         
            +
                end
         
     | 
| 
      
 28 
     | 
    
         
            +
                result = fixture(:asset_path).last
         
     | 
| 
      
 29 
     | 
    
         
            +
                expect(app.assets['asset_path'].to_s).to eq(result)
         
     | 
| 
      
 30 
     | 
    
         
            +
              end
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
              it 'substitutes asset_url with url' do
         
     | 
| 
      
 33 
     | 
    
         
            +
                app = create_app do |app|
         
     | 
| 
      
 34 
     | 
    
         
            +
                  app.config.assets.paths << images_root
         
     | 
| 
      
 35 
     | 
    
         
            +
                  app.config.asset_host = 'http://localhost'
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
                result = fixture(:asset_url).last
         
     | 
| 
      
 38 
     | 
    
         
            +
                expect(app.assets['asset_url'].to_s).to eq(result)
         
     | 
| 
      
 39 
     | 
    
         
            +
              end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
      
 41 
     | 
    
         
            +
              context 'when config.assets.digest = true' do
         
     | 
| 
      
 42 
     | 
    
         
            +
                let(:app) do
         
     | 
| 
      
 43 
     | 
    
         
            +
                  create_app do |app|
         
     | 
| 
      
 44 
     | 
    
         
            +
                    app.config.assets.paths << images_root
         
     | 
| 
      
 45 
     | 
    
         
            +
                    app.config.asset_host = 'http://localhost'
         
     | 
| 
      
 46 
     | 
    
         
            +
                    app.config.assets.digest = true
         
     | 
| 
      
 47 
     | 
    
         
            +
                  end
         
     | 
| 
      
 48 
     | 
    
         
            +
                end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
                it 'appends fingerprint to asset path' do
         
     | 
| 
      
 51 
     | 
    
         
            +
                  digested_image_path = app.assets['rails.png'].digest_path
         
     | 
| 
      
 52 
     | 
    
         
            +
                  expect(digested_image_path).to match(/^rails-(\w+)\.png$/)
         
     | 
| 
      
 53 
     | 
    
         
            +
                  asset = app.assets['digested_asset_path']
         
     | 
| 
      
 54 
     | 
    
         
            +
                  expect(asset.to_s).to eq("body {\n  background-image: url(\"http://localhost/assets/#{digested_image_path}\");\n}\n")
         
     | 
| 
      
 55 
     | 
    
         
            +
                end
         
     | 
| 
      
 56 
     | 
    
         
            +
             
     | 
| 
      
 57 
     | 
    
         
            +
                it 'appends fingerprint to asset url' do
         
     | 
| 
      
 58 
     | 
    
         
            +
                  digested_image_path = app.assets['rails.png'].digest_path
         
     | 
| 
      
 59 
     | 
    
         
            +
                  expect(digested_image_path).to match(/^rails-(\w+)\.png$/)
         
     | 
| 
      
 60 
     | 
    
         
            +
                  asset = app.assets['digested_asset_url']
         
     | 
| 
      
 61 
     | 
    
         
            +
                  expect(asset.to_s).to eq("body {\n  background-image: url(\"http://localhost/assets/#{digested_image_path}\");\n}\n")
         
     | 
| 
      
 62 
     | 
    
         
            +
                end
         
     | 
| 
      
 63 
     | 
    
         
            +
              end
         
     | 
| 
      
 64 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'spec_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'stylus/tilt/stylus'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            describe Tilt::StylusTemplate do
         
     | 
| 
      
 5 
     | 
    
         
            +
              it 'registers the template for .styl files' do
         
     | 
| 
      
 6 
     | 
    
         
            +
                expect(Tilt['application.styl']).to eq(Stylus::Rails::StylusTemplate)
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              it 'has a content-type' do
         
     | 
| 
      
 10 
     | 
    
         
            +
                expect(Tilt::StylusTemplate.default_mime_type).to eq('text/css')
         
     | 
| 
      
 11 
     | 
    
         
            +
              end
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
              it 'compiles the given source' do
         
     | 
| 
      
 14 
     | 
    
         
            +
                input, output = fixture(:simple)
         
     | 
| 
      
 15 
     | 
    
         
            +
                template = Tilt::StylusTemplate.new { |_| input }
         
     | 
| 
      
 16 
     | 
    
         
            +
                expect(template.render).to eq(output)
         
     | 
| 
      
 17 
     | 
    
         
            +
              end
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
              it 'compiles with the compress option' do
         
     | 
| 
      
 20 
     | 
    
         
            +
                input, output = fixture(:compressed)
         
     | 
| 
      
 21 
     | 
    
         
            +
                template = Tilt::StylusTemplate.new(compress: true) { |_| input }
         
     | 
| 
      
 22 
     | 
    
         
            +
                expect(template.render).to eq(output)
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
    
        metadata
    CHANGED
    
    | 
         @@ -1,14 +1,14 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: stylus
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 1.0.0 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 1.0.0
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Lucas Mazza
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date: 2013- 
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2013-11-13 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: execjs
         
     | 
| 
         @@ -57,6 +57,8 @@ files: 
     | 
|
| 
       57 
57 
     | 
    
         
             
            - lib/stylus/runtime/runner.js
         
     | 
| 
       58 
58 
     | 
    
         
             
            - lib/stylus/runtime.rb
         
     | 
| 
       59 
59 
     | 
    
         
             
            - lib/stylus/sprockets.rb
         
     | 
| 
      
 60 
     | 
    
         
            +
            - lib/stylus/tilt/rails.rb
         
     | 
| 
      
 61 
     | 
    
         
            +
            - lib/stylus/tilt/stylus.rb
         
     | 
| 
       60 
62 
     | 
    
         
             
            - lib/stylus/tilt.rb
         
     | 
| 
       61 
63 
     | 
    
         
             
            - lib/stylus/version.rb
         
     | 
| 
       62 
64 
     | 
    
         
             
            - lib/stylus.rb
         
     | 
| 
         @@ -70,14 +72,14 @@ files: 
     | 
|
| 
       70 
72 
     | 
    
         
             
            - spec/sprockets_spec.rb
         
     | 
| 
       71 
73 
     | 
    
         
             
            - spec/stylus_spec.rb
         
     | 
| 
       72 
74 
     | 
    
         
             
            - spec/support/generators/test_case.rb
         
     | 
| 
       73 
     | 
    
         
            -
            - spec/support/generators/tmp/app/controllers/posts_controller.rb
         
     | 
| 
       74 
     | 
    
         
            -
            - spec/support/generators/tmp/app/helpers/posts_helper.rb
         
     | 
| 
       75 
75 
     | 
    
         
             
            - spec/support/generators/tmp/config/routes.rb
         
     | 
| 
       76 
76 
     | 
    
         
             
            - spec/support/helpers.rb
         
     | 
| 
       77 
77 
     | 
    
         
             
            - spec/support/matchers.rb
         
     | 
| 
       78 
     | 
    
         
            -
            - spec/ 
     | 
| 
      
 78 
     | 
    
         
            +
            - spec/tilt/rails_spec.rb
         
     | 
| 
      
 79 
     | 
    
         
            +
            - spec/tilt/stylus_spec.rb
         
     | 
| 
       79 
80 
     | 
    
         
             
            homepage: https://github.com/lucasmazza/ruby-stylus
         
     | 
| 
       80 
     | 
    
         
            -
            licenses: 
     | 
| 
      
 81 
     | 
    
         
            +
            licenses:
         
     | 
| 
      
 82 
     | 
    
         
            +
            - MIT
         
     | 
| 
       81 
83 
     | 
    
         
             
            metadata: {}
         
     | 
| 
       82 
84 
     | 
    
         
             
            post_install_message: 
         
     | 
| 
       83 
85 
     | 
    
         
             
            rdoc_options: []
         
     | 
| 
         @@ -90,12 +92,12 @@ required_ruby_version: !ruby/object:Gem::Requirement 
     | 
|
| 
       90 
92 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       91 
93 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       92 
94 
     | 
    
         
             
              requirements:
         
     | 
| 
       93 
     | 
    
         
            -
              - - ' 
     | 
| 
      
 95 
     | 
    
         
            +
              - - '>='
         
     | 
| 
       94 
96 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       95 
     | 
    
         
            -
                  version:  
     | 
| 
      
 97 
     | 
    
         
            +
                  version: '0'
         
     | 
| 
       96 
98 
     | 
    
         
             
            requirements: []
         
     | 
| 
       97 
99 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       98 
     | 
    
         
            -
            rubygems_version: 2.0. 
     | 
| 
      
 100 
     | 
    
         
            +
            rubygems_version: 2.0.3
         
     | 
| 
       99 
101 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       100 
102 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       101 
103 
     | 
    
         
             
            summary: Ruby Stylus Compiler
         
     | 
| 
         @@ -110,9 +112,8 @@ test_files: 
     | 
|
| 
       110 
112 
     | 
    
         
             
            - spec/sprockets_spec.rb
         
     | 
| 
       111 
113 
     | 
    
         
             
            - spec/stylus_spec.rb
         
     | 
| 
       112 
114 
     | 
    
         
             
            - spec/support/generators/test_case.rb
         
     | 
| 
       113 
     | 
    
         
            -
            - spec/support/generators/tmp/app/controllers/posts_controller.rb
         
     | 
| 
       114 
     | 
    
         
            -
            - spec/support/generators/tmp/app/helpers/posts_helper.rb
         
     | 
| 
       115 
115 
     | 
    
         
             
            - spec/support/generators/tmp/config/routes.rb
         
     | 
| 
       116 
116 
     | 
    
         
             
            - spec/support/helpers.rb
         
     | 
| 
       117 
117 
     | 
    
         
             
            - spec/support/matchers.rb
         
     | 
| 
       118 
     | 
    
         
            -
            - spec/ 
     | 
| 
      
 118 
     | 
    
         
            +
            - spec/tilt/rails_spec.rb
         
     | 
| 
      
 119 
     | 
    
         
            +
            - spec/tilt/stylus_spec.rb
         
     | 
    
        data/spec/tilt_spec.rb
    DELETED
    
    | 
         @@ -1,26 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require 'spec_helper'
         
     | 
| 
       2 
     | 
    
         
            -
            require 'stylus/tilt'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            describe Tilt::StylusTemplate do
         
     | 
| 
       5 
     | 
    
         
            -
             
     | 
| 
       6 
     | 
    
         
            -
              it "registers the template for .styl files" do
         
     | 
| 
       7 
     | 
    
         
            -
                Tilt['application.styl'].should == Tilt::StylusTemplate
         
     | 
| 
       8 
     | 
    
         
            -
              end
         
     | 
| 
       9 
     | 
    
         
            -
             
     | 
| 
       10 
     | 
    
         
            -
              it "has a content-type" do
         
     | 
| 
       11 
     | 
    
         
            -
                Tilt::StylusTemplate.default_mime_type.should == 'text/css'
         
     | 
| 
       12 
     | 
    
         
            -
              end
         
     | 
| 
       13 
     | 
    
         
            -
             
     | 
| 
       14 
     | 
    
         
            -
              it "compiles the given source" do
         
     | 
| 
       15 
     | 
    
         
            -
                input, output = fixture :simple
         
     | 
| 
       16 
     | 
    
         
            -
                template = Tilt::StylusTemplate.new { |t| input }
         
     | 
| 
       17 
     | 
    
         
            -
                template.render.should == output
         
     | 
| 
       18 
     | 
    
         
            -
              end
         
     | 
| 
       19 
     | 
    
         
            -
             
     | 
| 
       20 
     | 
    
         
            -
              it "compiles with the compress option" do
         
     | 
| 
       21 
     | 
    
         
            -
                input, output = fixture :compressed
         
     | 
| 
       22 
     | 
    
         
            -
                template = Tilt::StylusTemplate.new(:compress => true) { |t| input }
         
     | 
| 
       23 
     | 
    
         
            -
                template.render.should == output
         
     | 
| 
       24 
     | 
    
         
            -
              end
         
     | 
| 
       25 
     | 
    
         
            -
             
     | 
| 
       26 
     | 
    
         
            -
            end
         
     |