sassfmt 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +37 -0
- data/Rakefile +10 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/exe/sassfmt +5 -0
- data/lib/sassfmt/version.rb +3 -0
- data/lib/sassfmt.rb +53 -0
- data/sassfmt.gemspec +25 -0
- metadata +99 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: d83a8169e0b7de81f640010584ba7b34e9e6a7c8
|
4
|
+
data.tar.gz: 2bd1de8908d4bee2c809243b5d864525b0434aa5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 527b02df3e782feecb2feb8a6d23462c015e8f65b1b93a5668d9b4d8380667d0933e03b2d98db9d169be96ddabf35fce653b4e60304e9cae9214beaf4e706f3b
|
7
|
+
data.tar.gz: c33c6cb0e14ef2002921d72e91425e19ee66a0fa9a06d7819439b3ce75dda4f6d0c781a08361658916ccbe14bd9c929f2d584fa544143f5804e90fa3e2b7b2a0
|
data/.gitignore
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2016 Utkarsh Kukreti
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# Sassfmt
|
2
|
+
|
3
|
+
Sassfmt sorts properties in your .sass files according to the order defined in
|
4
|
+
Twitter's [RECESS]. (Sassfmt actually uses [scss-lint]'s updated fork available
|
5
|
+
[here][recess.txt].)
|
6
|
+
|
7
|
+
[RECESS]: https://github.com/twitter/recess
|
8
|
+
[scss-lint]: https://github.com/brigade/scss-lint
|
9
|
+
[recess.txt]: https://github.com/brigade/scss-lint/blob/fe04ca9de2d1cf1b28122fb3add7116bef995edd/data/property-sort-orders/recess.txt
|
10
|
+
|
11
|
+
## Installation
|
12
|
+
|
13
|
+
$ gem install sassfmt
|
14
|
+
|
15
|
+
## Usage
|
16
|
+
|
17
|
+
To format a .sass file and print to stdout:
|
18
|
+
|
19
|
+
$ sassfmt /path/to/your/style.sass
|
20
|
+
|
21
|
+
or
|
22
|
+
|
23
|
+
$ cat /path/to/your/style.sass | sassfmt
|
24
|
+
|
25
|
+
## Development
|
26
|
+
|
27
|
+
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment. Run `bundle exec sassfmt` to use the gem in this directory, ignoring other installed copies of this gem.
|
28
|
+
|
29
|
+
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/utkarshkukreti/sassfmt.
|
34
|
+
|
35
|
+
## License
|
36
|
+
|
37
|
+
The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "sassfmt"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/exe/sassfmt
ADDED
data/lib/sassfmt.rb
ADDED
@@ -0,0 +1,53 @@
|
|
1
|
+
require "sassfmt/version"
|
2
|
+
|
3
|
+
module Sassfmt
|
4
|
+
# From https://github.com/brigade/scss-lint/blob/fe04ca9de2d1cf1b28122fb3add7116bef995edd/data/property-sort-orders/recess.txt
|
5
|
+
# which itself was modified from https://github.com/twitter/recess.
|
6
|
+
PROPERTY_ORDER = %w(position top right bottom left z-index display
|
7
|
+
align-content align-items align-self flex flex-basis flex-direction flex-flow
|
8
|
+
flex-grow flex-shrink flex-wrap justify-content order float width height
|
9
|
+
max-width max-height min-width min-height padding padding-top padding-right
|
10
|
+
padding-bottom padding-left margin margin-top margin-right margin-bottom
|
11
|
+
margin-left margin-collapse margin-top-collapse margin-right-collapse
|
12
|
+
margin-bottom-collapse margin-left-collapse overflow overflow-x overflow-y clip
|
13
|
+
clear font font-family font-size font-smoothing osx-font-smoothing font-style
|
14
|
+
font-weight hyphens src line-height letter-spacing word-spacing color
|
15
|
+
text-align text-decoration text-indent text-overflow text-rendering
|
16
|
+
text-size-adjust text-shadow text-transform word-break word-wrap white-space
|
17
|
+
vertical-align list-style list-style-type list-style-position list-style-image
|
18
|
+
pointer-events cursor background background-attachment background-color
|
19
|
+
background-image background-position background-repeat background-size border
|
20
|
+
border-collapse border-top border-right border-bottom border-left border-color
|
21
|
+
border-image border-top-color border-right-color border-bottom-color
|
22
|
+
border-left-color border-spacing border-style border-top-style
|
23
|
+
border-right-style border-bottom-style border-left-style border-width
|
24
|
+
border-top-width border-right-width border-bottom-width border-left-width
|
25
|
+
border-radius border-top-right-radius border-bottom-right-radius
|
26
|
+
border-bottom-left-radius border-top-left-radius border-radius-topright
|
27
|
+
border-radius-bottomright border-radius-bottomleft border-radius-topleft
|
28
|
+
content quotes outline outline-offset outline-width outline-style outline-color
|
29
|
+
opacity filter visibility size zoom transform box-align box-flex box-orient
|
30
|
+
box-pack box-shadow box-sizing table-layout animation animation-delay
|
31
|
+
animation-duration animation-iteration-count animation-name
|
32
|
+
animation-play-state animation-timing-function animation-fill-mode transition
|
33
|
+
transition-delay transition-duration transition-property
|
34
|
+
transition-timing-function background-clip backface-visibility resize
|
35
|
+
appearance user-select interpolation-mode direction marks page set-link-source
|
36
|
+
unicode-bidi speak).map.with_index { |p, i| [p, i] }.to_h
|
37
|
+
|
38
|
+
PROPERTY_REGEXP = /^\s*([a-zA-Z0-9-]+)\s*:/
|
39
|
+
|
40
|
+
def self.format(sass)
|
41
|
+
sass.lines.chunk do |line|
|
42
|
+
[!!(line =~ PROPERTY_REGEXP), line.match(/^\s*/)[0].size]
|
43
|
+
end.flat_map do |((is_property, _), lines)|
|
44
|
+
if is_property
|
45
|
+
lines.sort_by.with_index do |line, i|
|
46
|
+
[PROPERTY_ORDER[line.match(PROPERTY_REGEXP)[1]] || Float::INFINITY, i]
|
47
|
+
end
|
48
|
+
else
|
49
|
+
lines
|
50
|
+
end
|
51
|
+
end.join
|
52
|
+
end
|
53
|
+
end
|
data/sassfmt.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'sassfmt/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "sassfmt"
|
8
|
+
spec.version = Sassfmt::VERSION
|
9
|
+
spec.authors = ["Utkarsh Kukreti"]
|
10
|
+
spec.email = ["utkarshkukreti@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Sorts properties in your Sass files according to Twitter RECESS}
|
13
|
+
spec.description = %q{Sorts properties in your Sass files according to Twitter RECESS}
|
14
|
+
spec.homepage = "https://github.com/utkarshkukreti/sassfmt"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
18
|
+
spec.bindir = "exe"
|
19
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
23
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
24
|
+
spec.add_development_dependency "minitest"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,99 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: sassfmt
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Utkarsh Kukreti
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
description: Sorts properties in your Sass files according to Twitter RECESS
|
56
|
+
email:
|
57
|
+
- utkarshkukreti@gmail.com
|
58
|
+
executables:
|
59
|
+
- sassfmt
|
60
|
+
extensions: []
|
61
|
+
extra_rdoc_files: []
|
62
|
+
files:
|
63
|
+
- ".gitignore"
|
64
|
+
- ".travis.yml"
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- bin/console
|
70
|
+
- bin/setup
|
71
|
+
- exe/sassfmt
|
72
|
+
- lib/sassfmt.rb
|
73
|
+
- lib/sassfmt/version.rb
|
74
|
+
- sassfmt.gemspec
|
75
|
+
homepage: https://github.com/utkarshkukreti/sassfmt
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - ">="
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ">="
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.4.5.1
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Sorts properties in your Sass files according to Twitter RECESS
|
99
|
+
test_files: []
|