sassmagic 0.1.2 → 0.1.3
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.
- data/Readme.md +3 -1
 - data/bin/sassmagic +19 -6
 - data/lib/sassmagic/config/imageuploader.js +27 -0
 - data/lib/sassmagic/config/sassmagic.json +16 -0
 - data/lib/sassmagic/installer.rb +301 -0
 - data/lib/sassmagic/reset.rb +12 -5
 - data/lib/sassmagic/utils.rb +42 -37
 - data/lib/sassmagic.rb +1 -0
 - metadata +5 -2
 
    
        data/Readme.md
    CHANGED
    
    | 
         @@ -15,6 +15,7 @@ sudo gem install sassmagic 
     | 
|
| 
       15 
15 
     | 
    
         | 
| 
       16 
16 
     | 
    
         
             
            same to sass
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
      
 18 
     | 
    
         
            +
            eg: sassmagic --style nested --x test.scss test.css
         
     | 
| 
       18 
19 
     | 
    
         | 
| 
       19 
20 
     | 
    
         
             
            ### configuration
         
     | 
| 
       20 
21 
     | 
    
         | 
| 
         @@ -41,7 +42,8 @@ sassmagic.json 配置文件: 
     | 
|
| 
       41 
42 
     | 
    
         
             
                        "imageLoader": "imageuploader.js",
         
     | 
| 
       42 
43 
     | 
    
         
             
                        "imagesPath": {
         
     | 
| 
       43 
44 
     | 
    
         
             
                        },
         
     | 
| 
       44 
     | 
    
         
            -
                        " 
     | 
| 
      
 45 
     | 
    
         
            +
                        "remoteStylesheet":"",
         
     | 
| 
      
 46 
     | 
    
         
            +
                        "tinypngKye",""
         
     | 
| 
       45 
47 
     | 
    
         
             
                    }
         
     | 
| 
       46 
48 
     | 
    
         | 
| 
       47 
49 
     | 
    
         
             
            imageuploader.js
         
     | 
    
        data/bin/sassmagic
    CHANGED
    
    | 
         @@ -11,6 +11,7 @@ require 'sass/exec' 
     | 
|
| 
       11 
11 
     | 
    
         
             
            require 'sassmagic/remote'
         
     | 
| 
       12 
12 
     | 
    
         
             
            require 'sassmagic/utils'
         
     | 
| 
       13 
13 
     | 
    
         
             
            require 'sassmagic/reset'
         
     | 
| 
      
 14 
     | 
    
         
            +
            require 'sassmagic/installer'
         
     | 
| 
       14 
15 
     | 
    
         
             
            # require 'debugger'
         
     | 
| 
       15 
16 
     | 
    
         | 
| 
       16 
17 
     | 
    
         | 
| 
         @@ -29,6 +30,7 @@ class Engine 
     | 
|
| 
       29 
30 
     | 
    
         
             
              end
         
     | 
| 
       30 
31 
     | 
    
         
             
            end
         
     | 
| 
       31 
32 
     | 
    
         | 
| 
      
 33 
     | 
    
         
            +
            isneedcompile = true
         
     | 
| 
       32 
34 
     | 
    
         
             
            multiple = false
         
     | 
| 
       33 
35 
     | 
    
         
             
            # debugger
         
     | 
| 
       34 
36 
     | 
    
         
             
            # ARGV.each{|v|
         
     | 
| 
         @@ -37,18 +39,29 @@ multiple = false 
     | 
|
| 
       37 
39 
     | 
    
         
             
            #   end
         
     | 
| 
       38 
40 
     | 
    
         
             
            # }
         
     | 
| 
       39 
41 
     | 
    
         | 
| 
      
 42 
     | 
    
         
            +
            if ARGV.include?'init'
         
     | 
| 
      
 43 
     | 
    
         
            +
              Sassmagic::Installers::Base.new
         
     | 
| 
      
 44 
     | 
    
         
            +
              isneedcompile = false
         
     | 
| 
      
 45 
     | 
    
         
            +
            end
         
     | 
| 
      
 46 
     | 
    
         
            +
             
     | 
| 
      
 47 
     | 
    
         
            +
            if ARGV.include?'creat'
         
     | 
| 
      
 48 
     | 
    
         
            +
              Sassmagic::Installers::Base.new(ARGV[-1])
         
     | 
| 
      
 49 
     | 
    
         
            +
              isneedcompile = false
         
     | 
| 
      
 50 
     | 
    
         
            +
            end
         
     | 
| 
      
 51 
     | 
    
         
            +
             
     | 
| 
       40 
52 
     | 
    
         
             
            if ARGV.include?'--x'
         
     | 
| 
       41 
53 
     | 
    
         
             
              multiple = true
         
     | 
| 
       42 
54 
     | 
    
         
             
            end
         
     | 
| 
       43 
55 
     | 
    
         | 
| 
       44 
56 
     | 
    
         | 
| 
       45 
57 
     | 
    
         
             
            # Engine.new.go
         
     | 
| 
       46 
     | 
    
         
            -
            if  
     | 
| 
       47 
     | 
    
         
            -
               
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
               
     | 
| 
       50 
     | 
    
         
            -
             
     | 
| 
      
 58 
     | 
    
         
            +
            if isneedcompile
         
     | 
| 
      
 59 
     | 
    
         
            +
              if multiple
         
     | 
| 
      
 60 
     | 
    
         
            +
                Engine.new.go
         
     | 
| 
      
 61 
     | 
    
         
            +
              else
         
     | 
| 
      
 62 
     | 
    
         
            +
                opts = Sass::Exec::SassScss.new(ARGV, :sass)
         
     | 
| 
      
 63 
     | 
    
         
            +
                opts.parse!
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
       51 
65 
     | 
    
         
             
            end
         
     | 
| 
       52 
66 
     | 
    
         | 
| 
       53 
67 
     | 
    
         | 
| 
       54 
     | 
    
         
            -
             
     | 
| 
         @@ -0,0 +1,27 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            var uploader = require('@ali/or-uploadimg');
         
     | 
| 
      
 2 
     | 
    
         
            +
            var fs = require('fs');
         
     | 
| 
      
 3 
     | 
    
         
            +
            var path = require('path');
         
     | 
| 
      
 4 
     | 
    
         
            +
            var file = process.argv[2]
         
     | 
| 
      
 5 
     | 
    
         
            +
            var imgList = process.argv[3] || []
         
     | 
| 
      
 6 
     | 
    
         
            +
             
     | 
| 
      
 7 
     | 
    
         
            +
            fs.readFile(file, 'utf8', function(err, data) {
         
     | 
| 
      
 8 
     | 
    
         
            +
                if(err) {
         
     | 
| 
      
 9 
     | 
    
         
            +
                    return console.log(err);
         
     | 
| 
      
 10 
     | 
    
         
            +
                }
         
     | 
| 
      
 11 
     | 
    
         
            +
                var config = JSON.parse(data);
         
     | 
| 
      
 12 
     | 
    
         
            +
                config.imagesPath = config.imagesPath || {}
         
     | 
| 
      
 13 
     | 
    
         
            +
                uploader(imgList, function (list) {
         
     | 
| 
      
 14 
     | 
    
         
            +
                    list.forEach(function(v,i){
         
     | 
| 
      
 15 
     | 
    
         
            +
                        for(var i in v){
         
     | 
| 
      
 16 
     | 
    
         
            +
                            config.imagesPath[i] = v[i].replace(/^https?:\/\//,'//')
         
     | 
| 
      
 17 
     | 
    
         
            +
                        }
         
     | 
| 
      
 18 
     | 
    
         
            +
                    })
         
     | 
| 
      
 19 
     | 
    
         
            +
                    //写文件
         
     | 
| 
      
 20 
     | 
    
         
            +
                    fs.writeFile(file, JSON.stringify(config,null,4), function(err) {
         
     | 
| 
      
 21 
     | 
    
         
            +
                        if(err) {
         
     | 
| 
      
 22 
     | 
    
         
            +
                            return console.log(err);
         
     | 
| 
      
 23 
     | 
    
         
            +
                        }
         
     | 
| 
      
 24 
     | 
    
         
            +
                        //console.log('writing done');
         
     | 
| 
      
 25 
     | 
    
         
            +
                    })
         
     | 
| 
      
 26 
     | 
    
         
            +
                });
         
     | 
| 
      
 27 
     | 
    
         
            +
            })
         
     | 
| 
         @@ -0,0 +1,16 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            {
         
     | 
| 
      
 2 
     | 
    
         
            +
                "isNeedPxToRem": true,
         
     | 
| 
      
 3 
     | 
    
         
            +
                "browserDefaultFontSize": "75px",
         
     | 
| 
      
 4 
     | 
    
         
            +
                "devicePixelRatio":"2",
         
     | 
| 
      
 5 
     | 
    
         
            +
                "ignore": [
         
     | 
| 
      
 6 
     | 
    
         
            +
                ],
         
     | 
| 
      
 7 
     | 
    
         
            +
                "outputExtra": [
         
     | 
| 
      
 8 
     | 
    
         
            +
                ],
         
     | 
| 
      
 9 
     | 
    
         
            +
                "imageMaxSize": "",
         
     | 
| 
      
 10 
     | 
    
         
            +
                "imageLoader": "../config/imageuploader.js",
         
     | 
| 
      
 11 
     | 
    
         
            +
                "imagesPath": {
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                },
         
     | 
| 
      
 14 
     | 
    
         
            +
                "remoteStylesheet": "",
         
     | 
| 
      
 15 
     | 
    
         
            +
                "tinypngKye": "_opLq9BVg-AHRQn0Fh0WNapWX83K6gmH"
         
     | 
| 
      
 16 
     | 
    
         
            +
            }
         
     | 
| 
         @@ -0,0 +1,301 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Sassmagic
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Installers
         
     | 
| 
      
 3 
     | 
    
         
            +
                class Base
         
     | 
| 
      
 4 
     | 
    
         
            +
                  # debugger
         
     | 
| 
      
 5 
     | 
    
         
            +
                  def initialize(projectname = '')
         
     | 
| 
      
 6 
     | 
    
         
            +
                    # Dir.mkdir("directory")
         
     | 
| 
      
 7 
     | 
    
         
            +
                    # txt = File.open("directory/a.txt","w+")
         
     | 
| 
      
 8 
     | 
    
         
            +
                    # txt.puts("hello world")
         
     | 
| 
      
 9 
     | 
    
         
            +
                    # txt.close
         
     | 
| 
      
 10 
     | 
    
         
            +
                    if projectname != ''
         
     | 
| 
      
 11 
     | 
    
         
            +
                      projectname ="#{projectname}/"
         
     | 
| 
      
 12 
     | 
    
         
            +
                    end
         
     | 
| 
      
 13 
     | 
    
         
            +
                    directory "#{projectname}sass"
         
     | 
| 
      
 14 
     | 
    
         
            +
                    directory "#{projectname}config"
         
     | 
| 
      
 15 
     | 
    
         
            +
                    directory "#{projectname}stylesheet"
         
     | 
| 
      
 16 
     | 
    
         
            +
                    directory "#{projectname}image"
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
                    # write_file 'a.txt','hi'
         
     | 
| 
      
 19 
     | 
    
         
            +
                    copy File.expand_path("#{File.dirname(__FILE__)}/config/imageuploader.js"),File.expand_path("#{Dir::pwd}/#{projectname}/config/imageuploader.js")
         
     | 
| 
      
 20 
     | 
    
         
            +
                    copy File.expand_path("#{File.dirname(__FILE__)}/config/sassmagic.json"),File.expand_path("#{Dir::pwd}/#{projectname}/config/sassmagic.json")
         
     | 
| 
      
 21 
     | 
    
         
            +
                    finalize
         
     | 
| 
      
 22 
     | 
    
         
            +
                  end
         
     | 
| 
      
 23 
     | 
    
         
            +
                  attr_writer :logger
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  def logger
         
     | 
| 
      
 26 
     | 
    
         
            +
                    @logger ||= Logger.new
         
     | 
| 
      
 27 
     | 
    
         
            +
                  end
         
     | 
| 
      
 28 
     | 
    
         
            +
                  # copy/process a template in the compass template directory to the project directory.
         
     | 
| 
      
 29 
     | 
    
         
            +
                  def copy(from, to, options = nil, binary = false)
         
     | 
| 
      
 30 
     | 
    
         
            +
                    options ||= self.options if self.respond_to?(:options)
         
     | 
| 
      
 31 
     | 
    
         
            +
                    if binary
         
     | 
| 
      
 32 
     | 
    
         
            +
                      contents = File.new(from,"rb").read
         
     | 
| 
      
 33 
     | 
    
         
            +
                    else
         
     | 
| 
      
 34 
     | 
    
         
            +
                      contents = File.new(from).read
         
     | 
| 
      
 35 
     | 
    
         
            +
                    end
         
     | 
| 
      
 36 
     | 
    
         
            +
                    write_file to, contents, options, binary
         
     | 
| 
      
 37 
     | 
    
         
            +
                  end
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
      
 39 
     | 
    
         
            +
                  # create a directory and all the directories necessary to reach it.
         
     | 
| 
      
 40 
     | 
    
         
            +
                  def directory(dir, options = nil)
         
     | 
| 
      
 41 
     | 
    
         
            +
                    options ||= self.options if self.respond_to?(:options)
         
     | 
| 
      
 42 
     | 
    
         
            +
                    options ||= {}
         
     | 
| 
      
 43 
     | 
    
         
            +
                    if File.exists?(dir) && File.directory?(dir)
         
     | 
| 
      
 44 
     | 
    
         
            +
                      # do nothing
         
     | 
| 
      
 45 
     | 
    
         
            +
                    elsif File.exists?(dir)
         
     | 
| 
      
 46 
     | 
    
         
            +
                      msg = "#{basename(dir)} already exists and is not a directory."
         
     | 
| 
      
 47 
     | 
    
         
            +
                      raise Compass::FilesystemConflict.new(msg)
         
     | 
| 
      
 48 
     | 
    
         
            +
                    else
         
     | 
| 
      
 49 
     | 
    
         
            +
                      log_action :directory, separate("#{basename(dir)}/"), options
         
     | 
| 
      
 50 
     | 
    
         
            +
                      FileUtils.mkdir_p(dir)
         
     | 
| 
      
 51 
     | 
    
         
            +
                    end
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
             
     | 
| 
      
 54 
     | 
    
         
            +
                  # Write a file given the file contents as a string
         
     | 
| 
      
 55 
     | 
    
         
            +
                  def write_file(file_name, contents, options = nil, binary = false)
         
     | 
| 
      
 56 
     | 
    
         
            +
                    options ||= self.options if self.respond_to?(:options)
         
     | 
| 
      
 57 
     | 
    
         
            +
                    options ||= {}
         
     | 
| 
      
 58 
     | 
    
         
            +
                    skip_write = false
         
     | 
| 
      
 59 
     | 
    
         
            +
                    # debugger
         
     | 
| 
      
 60 
     | 
    
         
            +
                    # contents = process_erb(contents, options[:erb]) if options[:erb]
         
     | 
| 
      
 61 
     | 
    
         
            +
                    if File.exists?(file_name)
         
     | 
| 
      
 62 
     | 
    
         
            +
                      existing_contents = IO.read(file_name)
         
     | 
| 
      
 63 
     | 
    
         
            +
                      if existing_contents == contents
         
     | 
| 
      
 64 
     | 
    
         
            +
                        log_action :identical, basename(file_name), options
         
     | 
| 
      
 65 
     | 
    
         
            +
                        skip_write = true
         
     | 
| 
      
 66 
     | 
    
         
            +
                      elsif options[:force]
         
     | 
| 
      
 67 
     | 
    
         
            +
                        log_action :overwrite, basename(file_name), options
         
     | 
| 
      
 68 
     | 
    
         
            +
                      else
         
     | 
| 
      
 69 
     | 
    
         
            +
                        msg = "File #{basename(file_name)} already exists. Run with --force to force overwrite."
         
     | 
| 
      
 70 
     | 
    
         
            +
                        raise puts(msg)
         
     | 
| 
      
 71 
     | 
    
         
            +
                      end
         
     | 
| 
      
 72 
     | 
    
         
            +
                    else
         
     | 
| 
      
 73 
     | 
    
         
            +
                      log_action :create, basename(file_name), options
         
     | 
| 
      
 74 
     | 
    
         
            +
                    end
         
     | 
| 
      
 75 
     | 
    
         
            +
                    if skip_write
         
     | 
| 
      
 76 
     | 
    
         
            +
                      FileUtils.touch file_name
         
     | 
| 
      
 77 
     | 
    
         
            +
                    else
         
     | 
| 
      
 78 
     | 
    
         
            +
                      mode = "w"
         
     | 
| 
      
 79 
     | 
    
         
            +
                      mode << "b" if binary
         
     | 
| 
      
 80 
     | 
    
         
            +
                      open(file_name, mode) do |file|
         
     | 
| 
      
 81 
     | 
    
         
            +
                        file.write(contents)
         
     | 
| 
      
 82 
     | 
    
         
            +
                      end
         
     | 
| 
      
 83 
     | 
    
         
            +
                    end
         
     | 
| 
      
 84 
     | 
    
         
            +
                  end
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
                  def process_erb(contents, ctx = nil)
         
     | 
| 
      
 87 
     | 
    
         
            +
                    ctx = Object.new.instance_eval("binding") unless ctx.is_a? Binding
         
     | 
| 
      
 88 
     | 
    
         
            +
                    ERB.new(contents).result(ctx)
         
     | 
| 
      
 89 
     | 
    
         
            +
                  end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                  def remove(file_name)
         
     | 
| 
      
 92 
     | 
    
         
            +
                    file_name ||= ''
         
     | 
| 
      
 93 
     | 
    
         
            +
                    if File.directory?(file_name)
         
     | 
| 
      
 94 
     | 
    
         
            +
                      FileUtils.rm_rf file_name
         
     | 
| 
      
 95 
     | 
    
         
            +
                      log_action :remove, basename(file_name)+"/", options
         
     | 
| 
      
 96 
     | 
    
         
            +
                    elsif File.exists?(file_name)
         
     | 
| 
      
 97 
     | 
    
         
            +
                      File.unlink file_name
         
     | 
| 
      
 98 
     | 
    
         
            +
                      log_action :remove, basename(file_name), options
         
     | 
| 
      
 99 
     | 
    
         
            +
                    end
         
     | 
| 
      
 100 
     | 
    
         
            +
                  end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                  def basename(file)
         
     | 
| 
      
 103 
     | 
    
         
            +
                    relativize(file) {|f| File.basename(file)}
         
     | 
| 
      
 104 
     | 
    
         
            +
                  end
         
     | 
| 
      
 105 
     | 
    
         
            +
             
     | 
| 
      
 106 
     | 
    
         
            +
                  def relativize(path)
         
     | 
| 
      
 107 
     | 
    
         
            +
                    path = File.expand_path(path)
         
     | 
| 
      
 108 
     | 
    
         
            +
                    if block_given?
         
     | 
| 
      
 109 
     | 
    
         
            +
                      yield path
         
     | 
| 
      
 110 
     | 
    
         
            +
                    else
         
     | 
| 
      
 111 
     | 
    
         
            +
                      path
         
     | 
| 
      
 112 
     | 
    
         
            +
                    end
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
             
     | 
| 
      
 115 
     | 
    
         
            +
                  # Write paths like we're on unix and then fix it
         
     | 
| 
      
 116 
     | 
    
         
            +
                  def separate(path)
         
     | 
| 
      
 117 
     | 
    
         
            +
                    path.gsub(%r{/}, File::SEPARATOR)
         
     | 
| 
      
 118 
     | 
    
         
            +
                  end
         
     | 
| 
      
 119 
     | 
    
         
            +
             
     | 
| 
      
 120 
     | 
    
         
            +
                  # Removes the trailing separator, if any, from a path.
         
     | 
| 
      
 121 
     | 
    
         
            +
                  def strip_trailing_separator(path)
         
     | 
| 
      
 122 
     | 
    
         
            +
                    (path[-1..-1] == File::SEPARATOR) ? path[0..-2] : path
         
     | 
| 
      
 123 
     | 
    
         
            +
                  end
         
     | 
| 
      
 124 
     | 
    
         
            +
             
     | 
| 
      
 125 
     | 
    
         
            +
                  def log_action(action, file, options)
         
     | 
| 
      
 126 
     | 
    
         
            +
                    quiet = !!options[:quiet]
         
     | 
| 
      
 127 
     | 
    
         
            +
                    quiet = false if options[:loud] && options[:loud] == true
         
     | 
| 
      
 128 
     | 
    
         
            +
                    quiet = false if options[:loud] && options[:loud].is_a?(Array) && options[:loud].include?(action)
         
     | 
| 
      
 129 
     | 
    
         
            +
                    unless quiet
         
     | 
| 
      
 130 
     | 
    
         
            +
                      logger.record(action, file, options[:extra].to_s)
         
     | 
| 
      
 131 
     | 
    
         
            +
                    end
         
     | 
| 
      
 132 
     | 
    
         
            +
                  end
         
     | 
| 
      
 133 
     | 
    
         
            +
             
     | 
| 
      
 134 
     | 
    
         
            +
             
     | 
| 
      
 135 
     | 
    
         
            +
                  def finalize(options = {})
         
     | 
| 
      
 136 
     | 
    
         
            +
                    puts <<-NEXTSTEPS
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
            *********************************************************************
         
     | 
| 
      
 139 
     | 
    
         
            +
            Congratulations! Your compass project has been created.
         
     | 
| 
      
 140 
     | 
    
         
            +
             
     | 
| 
      
 141 
     | 
    
         
            +
            You may now add sass stylesheets to the sass subdirectory of your project.
         
     | 
| 
      
 142 
     | 
    
         
            +
             
     | 
| 
      
 143 
     | 
    
         
            +
            Sass files beginning with an underscore are called partials and won't be
         
     | 
| 
      
 144 
     | 
    
         
            +
            compiled to CSS, but they can be imported into other sass stylesheets.
         
     | 
| 
      
 145 
     | 
    
         
            +
             
     | 
| 
      
 146 
     | 
    
         
            +
            You can configure your project by editing the config.rb configuration file.
         
     | 
| 
      
 147 
     | 
    
         
            +
             
     | 
| 
      
 148 
     | 
    
         
            +
            You must compile your sass stylesheets into CSS when they change.
         
     | 
| 
      
 149 
     | 
    
         
            +
            This can be done in one of the following ways:
         
     | 
| 
      
 150 
     | 
    
         
            +
              1. To compile on demand:
         
     | 
| 
      
 151 
     | 
    
         
            +
                 sassmagic --x [input] [output]
         
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
            More Resources:
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                    NEXTSTEPS
         
     | 
| 
      
 156 
     | 
    
         
            +
                  end
         
     | 
| 
      
 157 
     | 
    
         
            +
             
     | 
| 
      
 158 
     | 
    
         
            +
             
     | 
| 
      
 159 
     | 
    
         
            +
             
     | 
| 
      
 160 
     | 
    
         
            +
                end
         
     | 
| 
      
 161 
     | 
    
         
            +
             
     | 
| 
      
 162 
     | 
    
         
            +
                #   logger
         
     | 
| 
      
 163 
     | 
    
         
            +
                class Logger
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
                  COLORS = { :clear => 0, :red => 31, :green => 32, :yellow => 33, :blue => 34 }
         
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                  ACTION_COLORS = {
         
     | 
| 
      
 168 
     | 
    
         
            +
                      :error     => :red,
         
     | 
| 
      
 169 
     | 
    
         
            +
                      :warning   => :yellow,
         
     | 
| 
      
 170 
     | 
    
         
            +
                      :info      => :green,
         
     | 
| 
      
 171 
     | 
    
         
            +
                      :compile   => :green,
         
     | 
| 
      
 172 
     | 
    
         
            +
                      :overwrite => :yellow,
         
     | 
| 
      
 173 
     | 
    
         
            +
                      :modified  => :yellow,
         
     | 
| 
      
 174 
     | 
    
         
            +
                      :clean     => :yellow,
         
     | 
| 
      
 175 
     | 
    
         
            +
                      :write     => :green,
         
     | 
| 
      
 176 
     | 
    
         
            +
                      :create    => :green,
         
     | 
| 
      
 177 
     | 
    
         
            +
                      :remove    => :yellow,
         
     | 
| 
      
 178 
     | 
    
         
            +
                      :delete    => :yellow,
         
     | 
| 
      
 179 
     | 
    
         
            +
                      :deleted   => :yellow,
         
     | 
| 
      
 180 
     | 
    
         
            +
                      :created   => :yellow,
         
     | 
| 
      
 181 
     | 
    
         
            +
                      :exists    => :green,
         
     | 
| 
      
 182 
     | 
    
         
            +
                      :directory => :green,
         
     | 
| 
      
 183 
     | 
    
         
            +
                      :identical => :green,
         
     | 
| 
      
 184 
     | 
    
         
            +
                      :convert   => :green,
         
     | 
| 
      
 185 
     | 
    
         
            +
                      :unchanged => :yellow
         
     | 
| 
      
 186 
     | 
    
         
            +
                  }
         
     | 
| 
      
 187 
     | 
    
         
            +
             
     | 
| 
      
 188 
     | 
    
         
            +
                  DEFAULT_ACTIONS = ACTION_COLORS.keys
         
     | 
| 
      
 189 
     | 
    
         
            +
             
     | 
| 
      
 190 
     | 
    
         
            +
                  ACTION_CAN_BE_QUIET = {
         
     | 
| 
      
 191 
     | 
    
         
            +
                      :error     => false,
         
     | 
| 
      
 192 
     | 
    
         
            +
                      :warning   => true,
         
     | 
| 
      
 193 
     | 
    
         
            +
                      :info      => true,
         
     | 
| 
      
 194 
     | 
    
         
            +
                      :compile   => true,
         
     | 
| 
      
 195 
     | 
    
         
            +
                      :overwrite => true,
         
     | 
| 
      
 196 
     | 
    
         
            +
                      :modified  => true,
         
     | 
| 
      
 197 
     | 
    
         
            +
                      :clean     => true,
         
     | 
| 
      
 198 
     | 
    
         
            +
                      :write     => true,
         
     | 
| 
      
 199 
     | 
    
         
            +
                      :create    => true,
         
     | 
| 
      
 200 
     | 
    
         
            +
                      :remove    => true,
         
     | 
| 
      
 201 
     | 
    
         
            +
                      :delete    => true,
         
     | 
| 
      
 202 
     | 
    
         
            +
                      :deleted   => true,
         
     | 
| 
      
 203 
     | 
    
         
            +
                      :created   => true,
         
     | 
| 
      
 204 
     | 
    
         
            +
                      :exists    => true,
         
     | 
| 
      
 205 
     | 
    
         
            +
                      :directory => true,
         
     | 
| 
      
 206 
     | 
    
         
            +
                      :identical => true,
         
     | 
| 
      
 207 
     | 
    
         
            +
                      :convert   => true,
         
     | 
| 
      
 208 
     | 
    
         
            +
                      :unchanged => true
         
     | 
| 
      
 209 
     | 
    
         
            +
                  }
         
     | 
| 
      
 210 
     | 
    
         
            +
             
     | 
| 
      
 211 
     | 
    
         
            +
                  attr_accessor :actions, :options, :time
         
     | 
| 
      
 212 
     | 
    
         
            +
             
     | 
| 
      
 213 
     | 
    
         
            +
                  def initialize(*actions)
         
     | 
| 
      
 214 
     | 
    
         
            +
                    self.options = actions.last.is_a?(Hash) ? actions.pop : {}
         
     | 
| 
      
 215 
     | 
    
         
            +
                    @actions = DEFAULT_ACTIONS.dup
         
     | 
| 
      
 216 
     | 
    
         
            +
                    @actions += actions
         
     | 
| 
      
 217 
     | 
    
         
            +
                  end
         
     | 
| 
      
 218 
     | 
    
         
            +
             
     | 
| 
      
 219 
     | 
    
         
            +
                  # Record an action that has occurred
         
     | 
| 
      
 220 
     | 
    
         
            +
                  def record(action, *arguments)
         
     | 
| 
      
 221 
     | 
    
         
            +
                    return if options[:quiet] && ACTION_CAN_BE_QUIET[action]
         
     | 
| 
      
 222 
     | 
    
         
            +
                    msg = ""
         
     | 
| 
      
 223 
     | 
    
         
            +
                    if time
         
     | 
| 
      
 224 
     | 
    
         
            +
                      msg << Time.now.strftime("%I:%M:%S.%3N %p")
         
     | 
| 
      
 225 
     | 
    
         
            +
                    end
         
     | 
| 
      
 226 
     | 
    
         
            +
                    msg << color(ACTION_COLORS[action])
         
     | 
| 
      
 227 
     | 
    
         
            +
                    msg << "#{action_padding(action)}#{action}"
         
     | 
| 
      
 228 
     | 
    
         
            +
                    msg << color(:clear)
         
     | 
| 
      
 229 
     | 
    
         
            +
                    msg << " #{arguments.join(' ')}"
         
     | 
| 
      
 230 
     | 
    
         
            +
                    log msg
         
     | 
| 
      
 231 
     | 
    
         
            +
                  end
         
     | 
| 
      
 232 
     | 
    
         
            +
             
     | 
| 
      
 233 
     | 
    
         
            +
                  def green
         
     | 
| 
      
 234 
     | 
    
         
            +
                    wrap(:green) { yield }
         
     | 
| 
      
 235 
     | 
    
         
            +
                  end
         
     | 
| 
      
 236 
     | 
    
         
            +
             
     | 
| 
      
 237 
     | 
    
         
            +
                  def red
         
     | 
| 
      
 238 
     | 
    
         
            +
                    wrap(:red) { yield }
         
     | 
| 
      
 239 
     | 
    
         
            +
                  end
         
     | 
| 
      
 240 
     | 
    
         
            +
             
     | 
| 
      
 241 
     | 
    
         
            +
                  def yellow
         
     | 
| 
      
 242 
     | 
    
         
            +
                    wrap(:yellow) { yield }
         
     | 
| 
      
 243 
     | 
    
         
            +
                  end
         
     | 
| 
      
 244 
     | 
    
         
            +
             
     | 
| 
      
 245 
     | 
    
         
            +
                  def wrap(c, reset_to = :clear)
         
     | 
| 
      
 246 
     | 
    
         
            +
                    $stderr.write(color(c))
         
     | 
| 
      
 247 
     | 
    
         
            +
                    $stdout.write(color(c))
         
     | 
| 
      
 248 
     | 
    
         
            +
                    yield
         
     | 
| 
      
 249 
     | 
    
         
            +
                  ensure
         
     | 
| 
      
 250 
     | 
    
         
            +
                    $stderr.write(color(reset_to))
         
     | 
| 
      
 251 
     | 
    
         
            +
                    $stdout.write(color(reset_to))
         
     | 
| 
      
 252 
     | 
    
         
            +
                    $stdout.flush
         
     | 
| 
      
 253 
     | 
    
         
            +
                  end
         
     | 
| 
      
 254 
     | 
    
         
            +
             
     | 
| 
      
 255 
     | 
    
         
            +
                  def color(c)
         
     | 
| 
      
 256 
     | 
    
         
            +
                    if c && COLORS.has_key?(c.to_sym)
         
     | 
| 
      
 257 
     | 
    
         
            +
                      if defined?($boring) && $boring
         
     | 
| 
      
 258 
     | 
    
         
            +
                        ""
         
     | 
| 
      
 259 
     | 
    
         
            +
                      else
         
     | 
| 
      
 260 
     | 
    
         
            +
                        "\e[#{COLORS[c.to_sym]}m"
         
     | 
| 
      
 261 
     | 
    
         
            +
                      end
         
     | 
| 
      
 262 
     | 
    
         
            +
                    else
         
     | 
| 
      
 263 
     | 
    
         
            +
                      ""
         
     | 
| 
      
 264 
     | 
    
         
            +
                    end
         
     | 
| 
      
 265 
     | 
    
         
            +
                  end
         
     | 
| 
      
 266 
     | 
    
         
            +
             
     | 
| 
      
 267 
     | 
    
         
            +
                  # Emit a log message without a trailing newline
         
     | 
| 
      
 268 
     | 
    
         
            +
                  def emit(msg)
         
     | 
| 
      
 269 
     | 
    
         
            +
                    print msg
         
     | 
| 
      
 270 
     | 
    
         
            +
                    $stdout.flush
         
     | 
| 
      
 271 
     | 
    
         
            +
                  end
         
     | 
| 
      
 272 
     | 
    
         
            +
             
     | 
| 
      
 273 
     | 
    
         
            +
                  # Emit a log message with a trailing newline
         
     | 
| 
      
 274 
     | 
    
         
            +
                  def log(msg)
         
     | 
| 
      
 275 
     | 
    
         
            +
                    puts msg
         
     | 
| 
      
 276 
     | 
    
         
            +
                    $stdout.flush
         
     | 
| 
      
 277 
     | 
    
         
            +
                  end
         
     | 
| 
      
 278 
     | 
    
         
            +
             
     | 
| 
      
 279 
     | 
    
         
            +
                  # add padding to the left of an action that was performed.
         
     | 
| 
      
 280 
     | 
    
         
            +
                  def action_padding(action)
         
     | 
| 
      
 281 
     | 
    
         
            +
                    ' ' * [(max_action_length - action.to_s.length), 0].max
         
     | 
| 
      
 282 
     | 
    
         
            +
                  end
         
     | 
| 
      
 283 
     | 
    
         
            +
             
     | 
| 
      
 284 
     | 
    
         
            +
                  # the maximum length of all the actions known to the logger.
         
     | 
| 
      
 285 
     | 
    
         
            +
                  def max_action_length
         
     | 
| 
      
 286 
     | 
    
         
            +
                    @max_action_length ||= actions.inject(0){|memo, a| [memo, a.to_s.length].max}
         
     | 
| 
      
 287 
     | 
    
         
            +
                  end
         
     | 
| 
      
 288 
     | 
    
         
            +
                end
         
     | 
| 
      
 289 
     | 
    
         
            +
             
     | 
| 
      
 290 
     | 
    
         
            +
                class NullLogger < Logger
         
     | 
| 
      
 291 
     | 
    
         
            +
                  def record(*args)
         
     | 
| 
      
 292 
     | 
    
         
            +
                  end
         
     | 
| 
      
 293 
     | 
    
         
            +
             
     | 
| 
      
 294 
     | 
    
         
            +
                  def log(msg)
         
     | 
| 
      
 295 
     | 
    
         
            +
                  end
         
     | 
| 
      
 296 
     | 
    
         
            +
             
     | 
| 
      
 297 
     | 
    
         
            +
                  def emit(msg)
         
     | 
| 
      
 298 
     | 
    
         
            +
                  end
         
     | 
| 
      
 299 
     | 
    
         
            +
                end
         
     | 
| 
      
 300 
     | 
    
         
            +
              end
         
     | 
| 
      
 301 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/sassmagic/reset.rb
    CHANGED
    
    | 
         @@ -141,13 +141,14 @@ module Sass 
     | 
|
| 
       141 
141 
     | 
    
         
             
                # print 'star compile file:'
         
     | 
| 
       142 
142 
     | 
    
         
             
                #加载json
         
     | 
| 
       143 
143 
     | 
    
         
             
                # 获取设置
         
     | 
| 
       144 
     | 
    
         
            -
                $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/sassmagic.json")) || {}
         
     | 
| 
      
 144 
     | 
    
         
            +
                $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/../config/sassmagic.json")) || {}
         
     | 
| 
       145 
145 
     | 
    
         
             
                # puts $configHash
         
     | 
| 
       146 
146 
     | 
    
         
             
                options = args.last.is_a?(Hash) ? args.pop : {}
         
     | 
| 
       147 
147 
     | 
    
         
             
                options = options.merge $configHash
         
     | 
| 
       148 
148 
     | 
    
         
             
                css_filename = args.shift
         
     | 
| 
       149 
149 
     | 
    
         
             
                #是否写入loadpath
         
     | 
| 
       150 
     | 
    
         
            -
                 
     | 
| 
      
 150 
     | 
    
         
            +
                # debugger
         
     | 
| 
      
 151 
     | 
    
         
            +
                if (options.has_key?"remoteStylesheet") && (options["remoteStylesheet"] != '')
         
     | 
| 
       151 
152 
     | 
    
         
             
                  RemoteSass.location = options["remoteStylesheet"]
         
     | 
| 
       152 
153 
     | 
    
         
             
                end
         
     | 
| 
       153 
154 
     | 
    
         
             
                #
         
     | 
| 
         @@ -438,6 +439,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base 
     | 
|
| 
       438 
439 
     | 
    
         
             
              end
         
     | 
| 
       439 
440 
     | 
    
         
             
              #属性重写开始
         
     | 
| 
       440 
441 
     | 
    
         
             
              def visit_prop(node)
         
     | 
| 
      
 442 
     | 
    
         
            +
                # debugger
         
     | 
| 
       441 
443 
     | 
    
         
             
                opt = node.options
         
     | 
| 
       442 
444 
     | 
    
         
             
                if $configHash == nil || $configHash == {}
         
     | 
| 
       443 
445 
     | 
    
         
             
                  #读取配置文件
         
     | 
| 
         @@ -445,7 +447,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base 
     | 
|
| 
       445 
447 
     | 
    
         
             
                  #加载json
         
     | 
| 
       446 
448 
     | 
    
         
             
                  # 获取设置
         
     | 
| 
       447 
449 
     | 
    
         
             
                  filename = opt[:filename] || ''
         
     | 
| 
       448 
     | 
    
         
            -
                  $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/sassmagic.json")) || {}
         
     | 
| 
      
 450 
     | 
    
         
            +
                  $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/../config/sassmagic.json")) || {}
         
     | 
| 
       449 
451 
     | 
    
         
             
                  opt = opt.merge $configHash
         
     | 
| 
       450 
452 
     | 
    
         
             
                else
         
     | 
| 
       451 
453 
     | 
    
         
             
                  opt = opt.merge $configHash
         
     | 
| 
         @@ -516,7 +518,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base 
     | 
|
| 
       516 
518 
     | 
    
         
             
                  #'0 1px.jpg 1px 2px;3pxabc 4px'.scan(/([\.\d]+)+(px)+([;\s]+|$)/)
         
     | 
| 
       517 
519 
     | 
    
         
             
                  #=> [["1", "px", " "], ["2", "px", ";"], ["4", "px", ""]]
         
     | 
| 
       518 
520 
     | 
    
         
             
                  str.scan(/([\.\d]+)+(px)+([;\s]+|$)/i){ |c,v|
         
     | 
| 
       519 
     | 
    
         
            -
                    if !(ignore.include? c+v) && (c != '1')
         
     | 
| 
      
 521 
     | 
    
         
            +
                    if !(ignore.include? c+v) && (c != '1') && c =~ /^[^0]+/
         
     | 
| 
       520 
522 
     | 
    
         
             
                      ret = ret.gsub(c.to_s,(format("%.3f",c.to_f/rem).to_f).to_s).gsub(v,'rem')
         
     | 
| 
       521 
523 
     | 
    
         
             
                    end
         
     | 
| 
       522 
524 
     | 
    
         
             
                  }
         
     | 
| 
         @@ -549,7 +551,7 @@ class Sass::Tree::Visitors::ToCss < Sass::Tree::Visitors::Base 
     | 
|
| 
       549 
551 
     | 
    
         
             
                  #加载json
         
     | 
| 
       550 
552 
     | 
    
         
             
                  # 获取设置
         
     | 
| 
       551 
553 
     | 
    
         
             
                  filename = opt[:filename] || ''
         
     | 
| 
       552 
     | 
    
         
            -
                  $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/sassmagic.json")) || {}
         
     | 
| 
      
 554 
     | 
    
         
            +
                  $configHash = ctx.load_json(File.expand_path("#{File.dirname(filename)}/../config/sassmagic.json")) || {}
         
     | 
| 
       553 
555 
     | 
    
         
             
                  opt = opt.merge $configHash
         
     | 
| 
       554 
556 
     | 
    
         
             
                else
         
     | 
| 
       555 
557 
     | 
    
         
             
                  opt = opt.merge $configHash
         
     | 
| 
         @@ -983,6 +985,11 @@ END 
     | 
|
| 
       983 
985 
     | 
    
         
             
                    puts("Sass #{Sass.version[:string]}")
         
     | 
| 
       984 
986 
     | 
    
         
             
                    exit
         
     | 
| 
       985 
987 
     | 
    
         
             
                  end
         
     | 
| 
      
 988 
     | 
    
         
            +
             
     | 
| 
      
 989 
     | 
    
         
            +
                  opts.on("creat", "--version", "Print the Sass version.") do
         
     | 
| 
      
 990 
     | 
    
         
            +
                    puts("Sass #{Sass.version[:string]}")
         
     | 
| 
      
 991 
     | 
    
         
            +
                    exit
         
     | 
| 
      
 992 
     | 
    
         
            +
                  end
         
     | 
| 
       986 
993 
     | 
    
         
             
                end
         
     | 
| 
       987 
994 
     | 
    
         | 
| 
       988 
995 
     | 
    
         
             
                def style(opts)
         
     | 
    
        data/lib/sassmagic/utils.rb
    CHANGED
    
    | 
         @@ -242,7 +242,7 @@ module Sass::Script::Functions 
     | 
|
| 
       242 
242 
     | 
    
         
             
              # url('a.png', $base64: true) => url(data:image/png;base64,iVBORw...)
         
     | 
| 
       243 
243 
     | 
    
         
             
              def url(*paths)
         
     | 
| 
       244 
244 
     | 
    
         
             
                # debugger
         
     | 
| 
       245 
     | 
    
         
            -
                $configHash ||= load_json(File.expand_path("#{File.dirname(options[:filename])}/sassmagic.json")) || Hash.new
         
     | 
| 
      
 245 
     | 
    
         
            +
                $configHash ||= load_json(File.expand_path("#{File.dirname(options[:filename])}/../config/sassmagic.json")) || Hash.new
         
     | 
| 
       246 
246 
     | 
    
         
             
                kwargs = paths.last.is_a?(Hash) ? paths.pop : {}
         
     | 
| 
       247 
247 
     | 
    
         
             
                raise Sass::SyntaxError, 'url() needs one path at least' if paths.empty?
         
     | 
| 
       248 
248 
     | 
    
         | 
| 
         @@ -262,49 +262,51 @@ module Sass::Script::Functions 
     | 
|
| 
       262 
262 
     | 
    
         
             
                #图片压缩
         
     | 
| 
       263 
263 
     | 
    
         
             
                # debugger
         
     | 
| 
       264 
264 
     | 
    
         
             
                # 未设置tinypngKye或者url图片,则不优化
         
     | 
| 
       265 
     | 
    
         
            -
                if !$configHash.has_key?('tinypngKye') || path =~ /^(http:|https:)\/\//
         
     | 
| 
       266 
     | 
    
         
            -
             
     | 
| 
       267 
     | 
    
         
            -
                 
     | 
| 
       268 
     | 
    
         
            -
             
     | 
| 
       269 
     | 
    
         
            -
             
     | 
| 
       270 
     | 
    
         
            -
             
     | 
| 
       271 
     | 
    
         
            -
             
     | 
| 
       272 
     | 
    
         
            -
             
     | 
| 
      
 265 
     | 
    
         
            +
                if !$configHash.has_key?('tinypngKye') || $configHash['tinypngKye'] == '' || path =~ /^(http:|https:)\/\//
         
     | 
| 
      
 266 
     | 
    
         
            +
             
     | 
| 
      
 267 
     | 
    
         
            +
                else
         
     | 
| 
      
 268 
     | 
    
         
            +
                  output = path.gsub(/\.(png|jpg)$/,'_tinypng.\1')
         
     | 
| 
      
 269 
     | 
    
         
            +
                  if File.exist?("#{File.dirname(options[:filename])}/#{output}")
         
     | 
| 
      
 270 
     | 
    
         
            +
                    path.gsub!(/\.(png|jpg)$/,'_tinypng.\1')
         
     | 
| 
      
 271 
     | 
    
         
            +
                    return
         
     | 
| 
      
 272 
     | 
    
         
            +
                  end
         
     | 
| 
       273 
273 
     | 
    
         | 
| 
       274 
     | 
    
         
            -
             
     | 
| 
       275 
     | 
    
         
            -
             
     | 
| 
      
 274 
     | 
    
         
            +
                  require "net/https"
         
     | 
| 
      
 275 
     | 
    
         
            +
                  require "uri"
         
     | 
| 
       276 
276 
     | 
    
         | 
| 
       277 
     | 
    
         
            -
             
     | 
| 
       278 
     | 
    
         
            -
             
     | 
| 
       279 
     | 
    
         
            -
             
     | 
| 
       280 
     | 
    
         
            -
             
     | 
| 
      
 277 
     | 
    
         
            +
                  key = $configHash['tinypngKye'] || ''
         
     | 
| 
      
 278 
     | 
    
         
            +
                  input = path
         
     | 
| 
      
 279 
     | 
    
         
            +
                  # real_path = File.expand_path("#{File.dirname(path)}/#{path}")
         
     | 
| 
      
 280 
     | 
    
         
            +
                  # output = "tiny-output.png"
         
     | 
| 
       281 
281 
     | 
    
         | 
| 
       282 
     | 
    
         
            -
             
     | 
| 
      
 282 
     | 
    
         
            +
                  uri = URI.parse("https://api.tinypng.com/shrink")
         
     | 
| 
       283 
283 
     | 
    
         | 
| 
       284 
     | 
    
         
            -
             
     | 
| 
       285 
     | 
    
         
            -
             
     | 
| 
      
 284 
     | 
    
         
            +
                  http = Net::HTTP.new(uri.host, uri.port)
         
     | 
| 
      
 285 
     | 
    
         
            +
                  http.use_ssl = true
         
     | 
| 
       286 
286 
     | 
    
         | 
| 
       287 
     | 
    
         
            -
            # Uncomment below if you have trouble validating our SSL certificate.
         
     | 
| 
       288 
     | 
    
         
            -
            # Download cacert.pem from: http://curl.haxx.se/ca/cacert.pem
         
     | 
| 
       289 
     | 
    
         
            -
            # http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
         
     | 
| 
      
 287 
     | 
    
         
            +
                  # Uncomment below if you have trouble validating our SSL certificate.
         
     | 
| 
      
 288 
     | 
    
         
            +
                  # Download cacert.pem from: http://curl.haxx.se/ca/cacert.pem
         
     | 
| 
      
 289 
     | 
    
         
            +
                  # http.ca_file = File.join(File.dirname(__FILE__), "cacert.pem")
         
     | 
| 
       290 
290 
     | 
    
         | 
| 
       291 
     | 
    
         
            -
             
     | 
| 
       292 
     | 
    
         
            -
             
     | 
| 
      
 291 
     | 
    
         
            +
                  request = Net::HTTP::Post.new(uri.request_uri)
         
     | 
| 
      
 292 
     | 
    
         
            +
                  request.basic_auth("api", key)
         
     | 
| 
       293 
293 
     | 
    
         | 
| 
       294 
     | 
    
         
            -
             
     | 
| 
       295 
     | 
    
         
            -
                # debugger
         
     | 
| 
       296 
     | 
    
         
            -
                if response.code == "201"
         
     | 
| 
       297 
     | 
    
         
            -
                  # Compression was successful, retrieve output from Location header.
         
     | 
| 
      
 294 
     | 
    
         
            +
                  response = http.request(request, File.binread("#{File.dirname(options[:filename])}/#{input}"))
         
     | 
| 
       298 
295 
     | 
    
         
             
                  # debugger
         
     | 
| 
       299 
     | 
    
         
            -
                   
     | 
| 
       300 
     | 
    
         
            -
             
     | 
| 
       301 
     | 
    
         
            -
             
     | 
| 
       302 
     | 
    
         
            -
             
     | 
| 
       303 
     | 
    
         
            -
             
     | 
| 
       304 
     | 
    
         
            -
             
     | 
| 
       305 
     | 
    
         
            -
             
     | 
| 
       306 
     | 
    
         
            -
             
     | 
| 
      
 296 
     | 
    
         
            +
                  if response.code == "201"
         
     | 
| 
      
 297 
     | 
    
         
            +
                    # Compression was successful, retrieve output from Location header.
         
     | 
| 
      
 298 
     | 
    
         
            +
                    # debugger
         
     | 
| 
      
 299 
     | 
    
         
            +
                    output = path
         
     | 
| 
      
 300 
     | 
    
         
            +
                    path.gsub!(/\.(png|jpg)$/,'_tinypng.\1')
         
     | 
| 
      
 301 
     | 
    
         
            +
                    # output['.png'] = '_tinypng.png'
         
     | 
| 
      
 302 
     | 
    
         
            +
                    # output['.jpg'] = '_tinypng.jpg'
         
     | 
| 
      
 303 
     | 
    
         
            +
                    File.binwrite("#{File.dirname(options[:filename])}/#{output}", http.get(response["location"]).body)
         
     | 
| 
      
 304 
     | 
    
         
            +
                  else
         
     | 
| 
      
 305 
     | 
    
         
            +
                    # Something went wrong! You can parse the JSON body for details.
         
     | 
| 
      
 306 
     | 
    
         
            +
                    puts "Compression failed"
         
     | 
| 
      
 307 
     | 
    
         
            +
                  end
         
     | 
| 
       307 
308 
     | 
    
         
             
                end
         
     | 
| 
      
 309 
     | 
    
         
            +
             
     | 
| 
       308 
310 
     | 
    
         
             
              end
         
     | 
| 
       309 
311 
     | 
    
         
             
              def timestamp(ts)
         
     | 
| 
       310 
312 
     | 
    
         
             
                # no kwargs
         
     | 
| 
         @@ -401,14 +403,17 @@ module Sass::Script::Functions 
     | 
|
| 
       401 
403 
     | 
    
         | 
| 
       402 
404 
     | 
    
         
             
                # 调用上传任务
         
     | 
| 
       403 
405 
     | 
    
         
             
                # debugger
         
     | 
| 
      
 406 
     | 
    
         
            +
                if (!$configHash.has_key?'imageLoader') || ($configHash["imageLoader"] == '')
         
     | 
| 
      
 407 
     | 
    
         
            +
                  return path
         
     | 
| 
      
 408 
     | 
    
         
            +
                end
         
     | 
| 
       404 
409 
     | 
    
         
             
                nodetask = $configHash["imageLoader"] || false
         
     | 
| 
       405 
410 
     | 
    
         
             
                taskargs = File.expand_path("#{File.dirname(options[:filename])}/#{path}")
         
     | 
| 
       406 
411 
     | 
    
         
             
                # debugger
         
     | 
| 
       407 
412 
     | 
    
         
             
                if nodetask && File::exists?( File.expand_path("#{File.dirname(options[:filename])}/#{nodetask}") )
         
     | 
| 
       408 
     | 
    
         
            -
                  task = system('node '+File.expand_path("#{File.dirname(options[:filename])}/#{nodetask}")+' '+File.expand_path("#{File.dirname(options[:filename])}/sassmagic.json")+' '+taskargs)
         
     | 
| 
      
 413 
     | 
    
         
            +
                  task = system('node '+File.expand_path("#{File.dirname(options[:filename])}/#{nodetask}")+' '+File.expand_path("#{File.dirname(options[:filename])}/../config/sassmagic.json")+' '+taskargs)
         
     | 
| 
       409 
414 
     | 
    
         
             
                  if task
         
     | 
| 
       410 
415 
     | 
    
         
             
                    # puts 'nodetask success'
         
     | 
| 
       411 
     | 
    
         
            -
                    $configHash = load_json(File.expand_path("#{File.dirname(options[:filename])}/sassmagic.json"))
         
     | 
| 
      
 416 
     | 
    
         
            +
                    $configHash = load_json(File.expand_path("#{File.dirname(options[:filename])}/../config/sassmagic.json"))
         
     | 
| 
       412 
417 
     | 
    
         
             
                    $configHash["imagesPath"] ||= Hash.new
         
     | 
| 
       413 
418 
     | 
    
         
             
                    if $configHash["imagesPath"].has_key?(path)
         
     | 
| 
       414 
419 
     | 
    
         
             
                      return $configHash["imagesPath"][path]
         
     | 
    
        data/lib/sassmagic.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sassmagic
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.3
         
     | 
| 
       5 
5 
     | 
    
         
             
              prerelease: 
         
     | 
| 
       6 
6 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       7 
7 
     | 
    
         
             
            authors:
         
     | 
| 
         @@ -9,7 +9,7 @@ authors: 
     | 
|
| 
       9 
9 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       10 
10 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       11 
11 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       12 
     | 
    
         
            -
            date: 2015-02- 
     | 
| 
      
 12 
     | 
    
         
            +
            date: 2015-02-11 00:00:00.000000000 Z
         
     | 
| 
       13 
13 
     | 
    
         
             
            dependencies:
         
     | 
| 
       14 
14 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       15 
15 
     | 
    
         
             
              name: sass
         
     | 
| 
         @@ -41,6 +41,9 @@ extensions: [] 
     | 
|
| 
       41 
41 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       42 
42 
     | 
    
         
             
            files:
         
     | 
| 
       43 
43 
     | 
    
         
             
            - bin/sassmagic
         
     | 
| 
      
 44 
     | 
    
         
            +
            - lib/sassmagic/config/imageuploader.js
         
     | 
| 
      
 45 
     | 
    
         
            +
            - lib/sassmagic/config/sassmagic.json
         
     | 
| 
      
 46 
     | 
    
         
            +
            - lib/sassmagic/installer.rb
         
     | 
| 
       44 
47 
     | 
    
         
             
            - lib/sassmagic/remote.rb
         
     | 
| 
       45 
48 
     | 
    
         
             
            - lib/sassmagic/reset.rb
         
     | 
| 
       46 
49 
     | 
    
         
             
            - lib/sassmagic/utils.rb
         
     |