squatch 0.0.1 → 0.5.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.
- data/LICENSE.txt +20 -0
- data/README.rdoc +51 -0
- data/bin/squatch +10 -0
- data/lib/squatch.rb +47 -2
- data/lib/squatch/base.rb +81 -0
- data/lib/squatch/version.rb +1 -1
- metadata +10 -5
data/LICENSE.txt
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) 2011 sdomino
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.rdoc
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
= Squatch
|
2
|
+
|
3
|
+
Squatch will take your sass/css files (or any file really) and 'squatch' them; meaning it will remove all extra linebreaks, and clean up whitespace, essentially making each css declaration a single line rather than multiple lines.
|
4
|
+
|
5
|
+
== Features
|
6
|
+
|
7
|
+
* Super pretty, super readable stylesheets
|
8
|
+
* Support for single or multiple file squatching
|
9
|
+
* Creates a backup of original file, incase you want to unsquatch your file
|
10
|
+
* Command Line Input (CLI)
|
11
|
+
* Rake tasks (coming soon)
|
12
|
+
* Thor tasks (coming soon)
|
13
|
+
|
14
|
+
== Install
|
15
|
+
|
16
|
+
=== Rails (coming soon)
|
17
|
+
|
18
|
+
Add this line to your Gemfile:
|
19
|
+
|
20
|
+
gem 'squatch'
|
21
|
+
|
22
|
+
Then do a bundle install:
|
23
|
+
|
24
|
+
bundle install
|
25
|
+
|
26
|
+
---
|
27
|
+
|
28
|
+
=== Non Rails
|
29
|
+
|
30
|
+
gem install squatch
|
31
|
+
|
32
|
+
== Usage
|
33
|
+
|
34
|
+
Usage: squatch -command [FILE/DIR]
|
35
|
+
|
36
|
+
-h, --help Display this help
|
37
|
+
-v, --version Display current gem version
|
38
|
+
-f, --file FILE Squatch FILE in place
|
39
|
+
-F, --files DIR Squatch files from DIR in place
|
40
|
+
|
41
|
+
---
|
42
|
+
|
43
|
+
== TODO
|
44
|
+
|
45
|
+
* Tests
|
46
|
+
* One final pass of cleanup and refactoring
|
47
|
+
* Cleanup the look of squatched files
|
48
|
+
|
49
|
+
== Copyright
|
50
|
+
|
51
|
+
Copyright (c) 2011 Steve Domino. See LICENSE.txt for further details
|
data/bin/squatch
ADDED
data/lib/squatch.rb
CHANGED
@@ -1,5 +1,50 @@
|
|
1
|
-
|
1
|
+
Dir["#{File.dirname(__FILE__)}/squatch/**/*"].each {|file| require(file)}
|
2
|
+
|
3
|
+
require 'optparse'
|
2
4
|
|
3
5
|
module Squatch
|
4
|
-
|
6
|
+
class << self
|
7
|
+
|
8
|
+
def run(arguments)
|
9
|
+
unless arguments.empty? || !arguments[0].include?('-')
|
10
|
+
optparser = OptionParser.new do|opts|
|
11
|
+
opts.banner = "Usage: squatch -command [FILE/DIR]"
|
12
|
+
|
13
|
+
opts.on('-h', '--help', 'Display this help') do
|
14
|
+
puts optparser
|
15
|
+
exit
|
16
|
+
end
|
17
|
+
opts.on('-v', '--version', 'Display current gem version') do
|
18
|
+
puts "Squatch-#{VERSION}"
|
19
|
+
end
|
20
|
+
opts.on('-f', '--file FILE', 'Squatch FILE in place') do |file|
|
21
|
+
prepare(file)
|
22
|
+
end
|
23
|
+
opts.on('-F', '--folder DIR', 'Squatch files from DIR in place') do |dir|
|
24
|
+
prepare(dir)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
begin optparser.parse!(arguments)
|
29
|
+
rescue OptionParser::ParseError => error
|
30
|
+
puts "#{error}"
|
31
|
+
puts optparser
|
32
|
+
exit
|
33
|
+
end
|
34
|
+
else
|
35
|
+
puts `squatch -h`
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
def prepare(data)
|
40
|
+
options = Hash[:data, data]
|
41
|
+
|
42
|
+
puts "Specify file type (ie css or js):"
|
43
|
+
options[:ext] = gets.strip
|
44
|
+
|
45
|
+
Squatch::Base.squatch(options)
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
5
49
|
end
|
50
|
+
|
data/lib/squatch/base.rb
ADDED
@@ -0,0 +1,81 @@
|
|
1
|
+
module Squatch
|
2
|
+
module Base
|
3
|
+
class << self
|
4
|
+
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
def squatch(options)
|
8
|
+
|
9
|
+
destination_path = Dir.open(File.dirname(options[:data]))
|
10
|
+
|
11
|
+
case File.ftype(options[:data])
|
12
|
+
when 'file'
|
13
|
+
files_to_squatch = Array[options[:data]]
|
14
|
+
backup_dir = "#{File.dirname(options[:data])}/backup"
|
15
|
+
when 'directory'
|
16
|
+
files_to_squatch = Dir.glob("#{options[:data]}/**/*#{options[:ext]}")
|
17
|
+
backup_dir = "#{options[:data]}/backup"
|
18
|
+
else
|
19
|
+
puts "Oops!"
|
20
|
+
exit
|
21
|
+
end
|
22
|
+
|
23
|
+
Dir.exists?(backup_dir) ? true : Dir.mkdir(backup_dir)
|
24
|
+
|
25
|
+
# squatch each file in files_to_compress and save in place
|
26
|
+
begin
|
27
|
+
files_to_squatch.each do |path|
|
28
|
+
File.open("#{path}", 'r+') do |file|
|
29
|
+
|
30
|
+
FileUtils.copy_file(file, "#{backup_dir}/#{File.basename(file, File.extname(file))}.txt")
|
31
|
+
puts "Backup of #{File.basename(file)} created at #{backup_dir} named #{File.basename(file, File.extname(file))}.txt."
|
32
|
+
|
33
|
+
new_lines = ''
|
34
|
+
|
35
|
+
puts "Squatching: #{File.basename(file)}..."
|
36
|
+
file.each_line do |line|
|
37
|
+
new_lines.concat(line.strip)
|
38
|
+
end
|
39
|
+
|
40
|
+
new_lines.gsub!(';', '; ')
|
41
|
+
new_lines.gsub!('{', '{ ')
|
42
|
+
new_lines.gsub!('}', "}\n")
|
43
|
+
new_lines.gsub!('/*', "\n/*")
|
44
|
+
new_lines.gsub!('*/', "*/\n")
|
45
|
+
|
46
|
+
# new_lines.each_char do |char|
|
47
|
+
# case char
|
48
|
+
# when ';'
|
49
|
+
# puts "SEMI: #{char}, #{char.class}"
|
50
|
+
# char.replace('HELLO')
|
51
|
+
# else
|
52
|
+
# end
|
53
|
+
# end
|
54
|
+
|
55
|
+
file.rewind
|
56
|
+
file.print(new_lines)
|
57
|
+
file.truncate(file.pos)
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
puts "#{File.basename(path)} has been squatched"
|
62
|
+
end
|
63
|
+
|
64
|
+
# confirm squatching
|
65
|
+
puts "Complete! All #{options[:ext]} files have been squatched"
|
66
|
+
rescue => exception
|
67
|
+
puts "Oops! #{exception.message}"
|
68
|
+
exception.backtrace.each do |trace|
|
69
|
+
puts "#{trace} \n"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
# this will save a version of their file somewhere incase they decide they don't want it squatched anymore. Much easier than actually trying to add all the whitespace back in.
|
75
|
+
def unsquatch(options)
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
data/lib/squatch/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: squatch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-09-
|
12
|
+
date: 2011-09-13 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &70182061025120 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,18 +21,23 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70182061025120
|
25
25
|
description: It's going to relate to sass, and I think I know what I want it to do...
|
26
26
|
email:
|
27
27
|
- domino.steve@gmail.com
|
28
|
-
executables:
|
28
|
+
executables:
|
29
|
+
- squatch
|
29
30
|
extensions: []
|
30
31
|
extra_rdoc_files: []
|
31
32
|
files:
|
32
33
|
- .gitignore
|
33
34
|
- Gemfile
|
35
|
+
- LICENSE.txt
|
36
|
+
- README.rdoc
|
34
37
|
- Rakefile
|
38
|
+
- bin/squatch
|
35
39
|
- lib/squatch.rb
|
40
|
+
- lib/squatch/base.rb
|
36
41
|
- lib/squatch/version.rb
|
37
42
|
- squatch.gemspec
|
38
43
|
homepage: http://github.com/sdomino/squatch
|