sassy_hash 0.0.5 → 0.0.6
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 +8 -8
 - data/lib/sassy_hash.rb +13 -7
 - data/spec/sass_hash_spec.rb +33 -1
 - metadata +1 -1
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,15 +1,15 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            !binary "U0hBMQ==":
         
     | 
| 
       3 
3 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       4 
     | 
    
         
            -
                 
     | 
| 
      
 4 
     | 
    
         
            +
                M2IyYzhhNGVmZDdjOTYxZTRkYWNjYzczNjg0N2U2YTg2OTQ5NDEyZA==
         
     | 
| 
       5 
5 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       6 
     | 
    
         
            -
                 
     | 
| 
      
 6 
     | 
    
         
            +
                NWYwYzA4NzdkZjliMzdhN2JjMjNiNTljNzQyODk1NzM2ZTVkODUyMQ==
         
     | 
| 
       7 
7 
     | 
    
         
             
            SHA512:
         
     | 
| 
       8 
8 
     | 
    
         
             
              metadata.gz: !binary |-
         
     | 
| 
       9 
     | 
    
         
            -
                 
     | 
| 
       10 
     | 
    
         
            -
                 
     | 
| 
       11 
     | 
    
         
            -
                 
     | 
| 
      
 9 
     | 
    
         
            +
                NjA5ODM3NjFmODlmMzQ4OWQ2YjE2MWY1MjYwODBmN2Q5MWJmMmE2MGRiMzZm
         
     | 
| 
      
 10 
     | 
    
         
            +
                Mjk4YTExNTc2YTg5NTkxZTlhZWM3MmE5ZTM1ZjE5NmJmMzQ2MDcwZDg5NGY0
         
     | 
| 
      
 11 
     | 
    
         
            +
                MTllZmE5NmI0ZjdhZWNkODg2NDA4ODI5MzVkZmM1MDcyNGRkZmM=
         
     | 
| 
       12 
12 
     | 
    
         
             
              data.tar.gz: !binary |-
         
     | 
| 
       13 
     | 
    
         
            -
                 
     | 
| 
       14 
     | 
    
         
            -
                 
     | 
| 
       15 
     | 
    
         
            -
                 
     | 
| 
      
 13 
     | 
    
         
            +
                M2RlODc3ZjMwMmVkYTJhNDg3OTgxN2IwZTA1MzlkZTFlNWIyNjVlNjVmODY4
         
     | 
| 
      
 14 
     | 
    
         
            +
                NTliOWMyZDE4ZWI1YzUyMzhjZmEzMmUwYTMxMmFkMWJhNmEzMTlhM2E2ZWZh
         
     | 
| 
      
 15 
     | 
    
         
            +
                ZTQwNWM0ZmRjZjNhZjg1YmQ4Mzg0NDBlNjA2YjQxNDhlODg3ZDg=
         
     | 
    
        data/lib/sassy_hash.rb
    CHANGED
    
    | 
         @@ -2,10 +2,9 @@ require 'sass' 
     | 
|
| 
       2 
2 
     | 
    
         
             
            require 'sass/scss/rx'
         
     | 
| 
       3 
3 
     | 
    
         
             
            class SassyHashException < Exception; end
         
     | 
| 
       4 
4 
     | 
    
         
             
            class SassyHash < Hash
         
     | 
| 
       5 
     | 
    
         
            -
              VERSION = "0.0. 
     | 
| 
      
 5 
     | 
    
         
            +
              VERSION = "0.0.6"
         
     | 
| 
       6 
6 
     | 
    
         
             
              VALID_UNIT = %r{(?<unit>#{::Sass::SCSS::RX::NMSTART}#{::Sass::SCSS::RX::NMCHAR}|%*)}
         
     | 
| 
       7 
     | 
    
         
            -
              VALID_NUMBER = %r{(?< 
     | 
| 
       8 
     | 
    
         
            -
             
     | 
| 
      
 7 
     | 
    
         
            +
              VALID_NUMBER = %r{((?<float>^[0-9]*\.[0-9]+)|(?<int>^[0-9]+))#{VALID_UNIT}}
         
     | 
| 
       9 
8 
     | 
    
         
             
              def self.[](hash_values)
         
     | 
| 
       10 
9 
     | 
    
         
             
                super(hash_values).tap do |hash|
         
     | 
| 
       11 
10 
     | 
    
         
             
                  hash.sassify!
         
     | 
| 
         @@ -34,18 +33,25 @@ class SassyHash < Hash 
     | 
|
| 
       34 
33 
     | 
    
         | 
| 
       35 
34 
     | 
    
         
             
              def self.sass_convert_value(value)
         
     | 
| 
       36 
35 
     | 
    
         
             
                case value
         
     | 
| 
       37 
     | 
    
         
            -
                when Integer,  
     | 
| 
       38 
     | 
    
         
            -
                  return ::Sass::Script::Value::Number.new(value)
         
     | 
| 
      
 36 
     | 
    
         
            +
                when Integer, Fixnum
         
     | 
| 
      
 37 
     | 
    
         
            +
                  return ::Sass::Script::Value::Number.new(value.to_i)
         
     | 
| 
      
 38 
     | 
    
         
            +
                when Float
         
     | 
| 
      
 39 
     | 
    
         
            +
                  return ::Sass::Script::Value::Number.new(value.to_f)
         
     | 
| 
       39 
40 
     | 
    
         
             
                when Symbol
         
     | 
| 
       40 
41 
     | 
    
         
             
                  return ::Sass::Script::Value::String.new(value.to_s)
         
     | 
| 
       41 
42 
     | 
    
         
             
                when String
         
     | 
| 
       42 
     | 
    
         
            -
                  # color
         
     | 
| 
      
 43 
     | 
    
         
            +
                  # hex color
         
     | 
| 
       43 
44 
     | 
    
         
             
                  if value =~ ::Sass::SCSS::RX::HEXCOLOR
         
     | 
| 
       44 
45 
     | 
    
         
             
                    return ::Sass::Script::Value::Color.from_hex(value)
         
     | 
| 
       45 
46 
     | 
    
         
             
                  end
         
     | 
| 
       46 
47 
     | 
    
         
             
                  #number
         
     | 
| 
       47 
48 
     | 
    
         
             
                  if matches = value.match(VALID_NUMBER)
         
     | 
| 
       48 
     | 
    
         
            -
                     
     | 
| 
      
 49 
     | 
    
         
            +
                    num = if matches[:float]
         
     | 
| 
      
 50 
     | 
    
         
            +
                      matches[:float].to_f
         
     | 
| 
      
 51 
     | 
    
         
            +
                    elsif matches[:int]
         
     | 
| 
      
 52 
     | 
    
         
            +
                      matches[:int].to_i
         
     | 
| 
      
 53 
     | 
    
         
            +
                    end
         
     | 
| 
      
 54 
     | 
    
         
            +
                    return ::Sass::Script::Value::Number.new(num, matches[:unit])
         
     | 
| 
       49 
55 
     | 
    
         
             
                  end
         
     | 
| 
       50 
56 
     | 
    
         
             
                  #string
         
     | 
| 
       51 
57 
     | 
    
         
             
                  return ::Sass::Script::Value::String.new(value)
         
     | 
    
        data/spec/sass_hash_spec.rb
    CHANGED
    
    | 
         @@ -54,15 +54,47 @@ describe SassyHash do 
     | 
|
| 
       54 
54 
     | 
    
         
             
                sassy_hash[sass_value(:foo)].value[2].value[2].class.should eq(::Sass::Script::Value::Map)
         
     | 
| 
       55 
55 
     | 
    
         
             
              end
         
     | 
| 
       56 
56 
     | 
    
         | 
| 
      
 57 
     | 
    
         
            +
              it "should create a hash valid for a map" do
         
     | 
| 
      
 58 
     | 
    
         
            +
                key = 'primaryColor'
         
     | 
| 
      
 59 
     | 
    
         
            +
                hash = {'height' => '120px', key => '#111', 'foo' => 'bar'}
         
     | 
| 
      
 60 
     | 
    
         
            +
                sassy_hash = SassyHash[hash]
         
     | 
| 
      
 61 
     | 
    
         
            +
                sassy_hash[sass_value(key)].class.should eq(::Sass::Script::Value::Color)
         
     | 
| 
      
 62 
     | 
    
         
            +
                sassy_hash[sass_value('height')].class.should eq(::Sass::Script::Value::Number)
         
     | 
| 
      
 63 
     | 
    
         
            +
                sassy_hash[sass_value('foo')].class.should eq(::Sass::Script::Value::String)
         
     | 
| 
      
 64 
     | 
    
         
            +
              end
         
     | 
| 
      
 65 
     | 
    
         
            +
              
         
     | 
| 
      
 66 
     | 
    
         
            +
              it "should create nested maps with string keys" do
         
     | 
| 
      
 67 
     | 
    
         
            +
                hash = {'foo' => {'bar' => {'baz' => 'hi'}}}
         
     | 
| 
      
 68 
     | 
    
         
            +
                sassy_hash = SassyHash[hash]
         
     | 
| 
      
 69 
     | 
    
         
            +
                sassy_hash[sass_value('foo')].value[sass_value('bar')].value[sass_value('baz')].value.should eq('hi')
         
     | 
| 
      
 70 
     | 
    
         
            +
              end
         
     | 
| 
      
 71 
     | 
    
         
            +
             
     | 
| 
      
 72 
     | 
    
         
            +
              it "should create a valid integer number" do
         
     | 
| 
      
 73 
     | 
    
         
            +
                hash = {:foo => "120px"}
         
     | 
| 
      
 74 
     | 
    
         
            +
                sassy_hash = SassyHash[hash]
         
     | 
| 
      
 75 
     | 
    
         
            +
                num = sassy_hash[sass_value(:foo)].value
         
     | 
| 
      
 76 
     | 
    
         
            +
                num.class.should eq(Fixnum)
         
     | 
| 
      
 77 
     | 
    
         
            +
                num.should eq(120)
         
     | 
| 
      
 78 
     | 
    
         
            +
              end
         
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
              it "should create a valid float number" do
         
     | 
| 
      
 81 
     | 
    
         
            +
                hash = {:foo => '120.5px'}
         
     | 
| 
      
 82 
     | 
    
         
            +
                sassy_hash = SassyHash[hash]
         
     | 
| 
      
 83 
     | 
    
         
            +
                num = sassy_hash[sass_value(:foo)].value
         
     | 
| 
      
 84 
     | 
    
         
            +
                num.class.should eq(Float)
         
     | 
| 
      
 85 
     | 
    
         
            +
                num.should eq(120.5)
         
     | 
| 
      
 86 
     | 
    
         
            +
              end
         
     | 
| 
      
 87 
     | 
    
         
            +
             
     | 
| 
       57 
88 
     | 
    
         
             
              {
         
     | 
| 
       58 
89 
     | 
    
         
             
                "#fff"    => ::Sass::Script::Value::Color,
         
     | 
| 
      
 90 
     | 
    
         
            +
                "#111"    => ::Sass::Script::Value::Color,
         
     | 
| 
       59 
91 
     | 
    
         
             
                "#eeeeee" => ::Sass::Script::Value::Color,
         
     | 
| 
       60 
92 
     | 
    
         
             
                'foo'     => ::Sass::Script::Value::String,
         
     | 
| 
       61 
93 
     | 
    
         
             
                0         => ::Sass::Script::Value::Number,
         
     | 
| 
       62 
94 
     | 
    
         
             
                1.0       => ::Sass::Script::Value::Number,
         
     | 
| 
       63 
95 
     | 
    
         
             
                "1.0px"   => ::Sass::Script::Value::Number,
         
     | 
| 
       64 
96 
     | 
    
         
             
                '1px'     => ::Sass::Script::Value::Number,
         
     | 
| 
       65 
     | 
    
         
            -
                '120px' 
     | 
| 
      
 97 
     | 
    
         
            +
                '120px'   => ::Sass::Script::Value::Number,
         
     | 
| 
       66 
98 
     | 
    
         
             
                :foo      => ::Sass::Script::Value::String,
         
     | 
| 
       67 
99 
     | 
    
         
             
                true      => ::Sass::Script::Value::Bool,
         
     | 
| 
       68 
100 
     | 
    
         
             
                false     => ::Sass::Script::Value::Bool
         
     |