hum 0.0.1
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/.gitignore +10 -0
- data/CHANGELOG.md +3 -0
- data/Gemfile +4 -0
- data/LICENSE +7 -0
- data/README.md +35 -0
- data/Rakefile +1 -0
- data/bin/hum +5 -0
- data/hum.gemspec +24 -0
- data/lib/hum.rb +7 -0
- data/lib/hum/array.rb +61 -0
- data/lib/hum/engine.rb +401 -0
- data/lib/hum/exec.rb +111 -0
- data/lib/hum/string.rb +8 -0
- data/lib/hum/version.rb +3 -0
- data/test/hum/templates/comma/comma.array +1 -0
- data/test/hum/templates/comma/comma.css +6 -0
- data/test/hum/templates/comma/comma.haml +6 -0
- data/test/hum/templates/comma/comma.haml_tags +1 -0
- data/test/hum/templates/comma/comma.html +0 -0
- data/test/hum/templates/comma/comma.sass +2 -0
- data/test/hum/templates/comma/comma_clean.sass +1 -0
- data/test/hum/templates/comma/comma_end.html +9 -0
- data/test/hum/templates/complex_parent/complex_parent.array +1 -0
- data/test/hum/templates/complex_parent/complex_parent.css +18 -0
- data/test/hum/templates/complex_parent/complex_parent.haml +12 -0
- data/test/hum/templates/complex_parent/complex_parent.haml_tags +1 -0
- data/test/hum/templates/complex_parent/complex_parent.html +0 -0
- data/test/hum/templates/complex_parent/complex_parent.sass +12 -0
- data/test/hum/templates/complex_parent/complex_parent_clean.sass +6 -0
- data/test/hum/templates/complex_parent/complex_parent_end.html +18 -0
- data/test/hum/templates/deep_nest/deep_nest.array +1 -0
- data/test/hum/templates/deep_nest/deep_nest.css +15 -0
- data/test/hum/templates/deep_nest/deep_nest.haml +19 -0
- data/test/hum/templates/deep_nest/deep_nest.haml_tags +1 -0
- data/test/hum/templates/deep_nest/deep_nest.html +0 -0
- data/test/hum/templates/deep_nest/deep_nest.sass +10 -0
- data/test/hum/templates/deep_nest/deep_nest_clean.sass +5 -0
- data/test/hum/templates/deep_nest/deep_nest_end.html +27 -0
- data/test/hum/templates/deep_nest/deep_nest_start.scss +15 -0
- data/test/hum/templates/line_nest/line_nest.array +1 -0
- data/test/hum/templates/line_nest/line_nest.css +6 -0
- data/test/hum/templates/line_nest/line_nest.haml +9 -0
- data/test/hum/templates/line_nest/line_nest.haml_tags +1 -0
- data/test/hum/templates/line_nest/line_nest.html +0 -0
- data/test/hum/templates/line_nest/line_nest.sass +5 -0
- data/test/hum/templates/line_nest/line_nest_clean.sass +2 -0
- data/test/hum/templates/line_nest/line_nest_end.html +15 -0
- data/test/hum/templates/nest/nest.array +1 -0
- data/test/hum/templates/nest/nest.css +9 -0
- data/test/hum/templates/nest/nest.haml +7 -0
- data/test/hum/templates/nest/nest.haml_tags +1 -0
- data/test/hum/templates/nest/nest.html +0 -0
- data/test/hum/templates/nest/nest.sass +6 -0
- data/test/hum/templates/nest/nest_clean.sass +3 -0
- data/test/hum/templates/nest/nest_end.html +12 -0
- data/test/hum/templates/parent_nest/parent_nest.array +1 -0
- data/test/hum/templates/parent_nest/parent_nest.css +12 -0
- data/test/hum/templates/parent_nest/parent_nest.haml +8 -0
- data/test/hum/templates/parent_nest/parent_nest.haml_tags +1 -0
- data/test/hum/templates/parent_nest/parent_nest.html +0 -0
- data/test/hum/templates/parent_nest/parent_nest.sass +8 -0
- data/test/hum/templates/parent_nest/parent_nest_clean.sass +4 -0
- data/test/hum/templates/parent_nest/parent_nest_end.html +12 -0
- data/test/hum/templates/parent_select/parent_select.array +1 -0
- data/test/hum/templates/parent_select/parent_select.css +4 -0
- data/test/hum/templates/parent_select/parent_select.haml +6 -0
- data/test/hum/templates/parent_select/parent_select.haml_tags +1 -0
- data/test/hum/templates/parent_select/parent_select.html +0 -0
- data/test/hum/templates/parent_select/parent_select.sass +4 -0
- data/test/hum/templates/parent_select/parent_select_clean.sass +2 -0
- data/test/hum/templates/parent_select/parent_select_end.html +9 -0
- data/test/hum/templates/simple/simple.array +1 -0
- data/test/hum/templates/simple/simple.css +9 -0
- data/test/hum/templates/simple/simple.haml +7 -0
- data/test/hum/templates/simple/simple.haml_tags +1 -0
- data/test/hum/templates/simple/simple.html +0 -0
- data/test/hum/templates/simple/simple.sass +8 -0
- data/test/hum/templates/simple/simple_clean.sass +3 -0
- data/test/hum/templates/simple/simple_end.html +10 -0
- data/test/hum/templates/single/single.array +1 -0
- data/test/hum/templates/single/single.css +3 -0
- data/test/hum/templates/single/single.haml +5 -0
- data/test/hum/templates/single/single.haml_tags +1 -0
- data/test/hum/templates/single/single.html +0 -0
- data/test/hum/templates/single/single.sass +2 -0
- data/test/hum/templates/single/single_clean.sass +1 -0
- data/test/hum/templates/single/single_end.html +8 -0
- data/test/run_tests.rb +119 -0
- metadata +241 -0
data/lib/hum/exec.rb
ADDED
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'optparse'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'hum/engine'
|
4
|
+
require 'fssm'
|
5
|
+
|
6
|
+
module Hum
|
7
|
+
|
8
|
+
class Exec
|
9
|
+
|
10
|
+
class Generic
|
11
|
+
|
12
|
+
def initialize(args)
|
13
|
+
@args = args
|
14
|
+
|
15
|
+
#Command line options
|
16
|
+
@options = {}
|
17
|
+
|
18
|
+
#Files to output
|
19
|
+
@files = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse!
|
23
|
+
begin
|
24
|
+
parse
|
25
|
+
rescue Exception => e
|
26
|
+
exit 1
|
27
|
+
end
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
|
31
|
+
def parse
|
32
|
+
@opts = OptionParser.new(&method(:set_opts))
|
33
|
+
if @args.kind_of? String
|
34
|
+
@args = [@args]
|
35
|
+
end
|
36
|
+
@opts.parse!(@args)
|
37
|
+
process_result
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
|
42
|
+
def process_result
|
43
|
+
args = @args.dup
|
44
|
+
input ||=
|
45
|
+
begin
|
46
|
+
filename = args.shift
|
47
|
+
@options[:filename] = filename
|
48
|
+
end
|
49
|
+
@files[:input] = input
|
50
|
+
end
|
51
|
+
|
52
|
+
end #Generic
|
53
|
+
|
54
|
+
class Hum < Generic
|
55
|
+
|
56
|
+
def initialize(args)
|
57
|
+
super
|
58
|
+
end
|
59
|
+
|
60
|
+
protected
|
61
|
+
|
62
|
+
def set_opts(opts)
|
63
|
+
opts.on_tail("-v", "--version", "Print version") do
|
64
|
+
puts "Hum #{::Hum::VERSION}"
|
65
|
+
exit
|
66
|
+
end
|
67
|
+
opts.on_tail("--watch", "Watch for changes") do
|
68
|
+
@options[:watch] = true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
def process_result
|
73
|
+
return watch if @options[:watch]
|
74
|
+
super
|
75
|
+
begin
|
76
|
+
#open css
|
77
|
+
input = @files[:input]
|
78
|
+
@machine = Engine.new
|
79
|
+
@machine.load(input)
|
80
|
+
@machine.run
|
81
|
+
rescue Exception => e
|
82
|
+
puts e
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
private
|
87
|
+
|
88
|
+
def watch
|
89
|
+
puts ">>> Hum is watching for changes. Press Ctrl-C to stop."
|
90
|
+
begin
|
91
|
+
current_path = Dir.pwd
|
92
|
+
monitor = FSSM::Monitor.new
|
93
|
+
monitor.path current_path, "**/*.css" do
|
94
|
+
update do |b, input|
|
95
|
+
puts ">>> Change found - #{input}..."
|
96
|
+
@machine = Engine.new
|
97
|
+
@machine.load(input)
|
98
|
+
@machine.run
|
99
|
+
end
|
100
|
+
end
|
101
|
+
monitor.run
|
102
|
+
rescue Exception => e
|
103
|
+
puts e
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
end #Hum < Generic
|
108
|
+
|
109
|
+
end #Exec
|
110
|
+
|
111
|
+
end #Hum
|
data/lib/hum/string.rb
ADDED
data/lib/hum/version.rb
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".foo", ".bar"], :tab=>0}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".foo", ".bar"], :tab=>0, :haml=>["%div.foo", "%div.bar"]}]
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
.foo, .bar
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".x-msg"], :tab=>0}, {:line=>2, :select=>["p"], :tab=>1}, {:line=>3, :select=>[".x-msg.green"], :tab=>0, :parent=>1, :kids=>[4]}, {:line=>4, :select=>[".close"], :tab=>1}, {:line=>5, :select=>[".x-msg.red"], :tab=>0, :parent=>1, :kids=>[6]}, {:line=>6, :select=>[".close"], :tab=>1}]
|
@@ -0,0 +1,18 @@
|
|
1
|
+
.x-msg {
|
2
|
+
position: relative;
|
3
|
+
}
|
4
|
+
.x-msg p {
|
5
|
+
color: #444;
|
6
|
+
}
|
7
|
+
.x-msg.green {
|
8
|
+
background-position: 10px 10px;
|
9
|
+
}
|
10
|
+
.x-msg.green .close {
|
11
|
+
background-image:none;
|
12
|
+
}
|
13
|
+
.x-msg.red{
|
14
|
+
background-position: 12px 12px;
|
15
|
+
}
|
16
|
+
.x-msg.red .close {
|
17
|
+
background-image:none;
|
18
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
%html
|
2
|
+
%head
|
3
|
+
%link{:type => 'text/css', :rel => 'stylesheet', :href => 'complex_parent.css'}
|
4
|
+
%body
|
5
|
+
%div.x-msg
|
6
|
+
%p Inner content
|
7
|
+
%div.x-msg.green
|
8
|
+
%p Inner content
|
9
|
+
%div.close Inner content
|
10
|
+
%div.x-msg.red
|
11
|
+
%p Inner content
|
12
|
+
%div.close Inner content
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".x-msg"], :tab=>0, :haml=>["%div.x-msg"]}, {:line=>2, :select=>["p"], :tab=>1, :haml=>["%p"]}, {:line=>3, :select=>[".x-msg.green"], :tab=>0, :parent=>1, :kids=>[4], :haml=>["%div.x-msg.green"]}, {:line=>4, :select=>[".close"], :tab=>1, :haml=>["%div.close"]}, {:line=>5, :select=>[".x-msg.red"], :tab=>0, :parent=>1, :kids=>[6], :haml=>["%div.x-msg.red"]}, {:line=>6, :select=>[".close"], :tab=>1, :haml=>["%div.close"]}]
|
File without changes
|
@@ -0,0 +1,18 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<link href='complex_parent.css' rel='stylesheet' type='text/css' />
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
<div class='x-msg'>
|
7
|
+
<p>Inner content</p>
|
8
|
+
</div>
|
9
|
+
<div class='x-msg green'>
|
10
|
+
<p>Inner content</p>
|
11
|
+
<div class='close'>Inner content</div>
|
12
|
+
</div>
|
13
|
+
<div class='x-msg red'>
|
14
|
+
<p>Inner content</p>
|
15
|
+
<div class='close'>Inner content</div>
|
16
|
+
</div>
|
17
|
+
</body>
|
18
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>["div"], :tab=>0}, {:line=>2, :select=>["p"], :tab=>1}, {:line=>3, :select=>["a"], :tab=>1}, {:line=>4, :select=>["div.red", "div.blue"], :tab=>0, :parent=>1}, {:line=>5, :select=>["div.black", "div.white"], :tab=>0, :parent=>1}]
|
@@ -0,0 +1,19 @@
|
|
1
|
+
%html
|
2
|
+
%head
|
3
|
+
%link{:type => 'text/css', :rel => 'stylesheet', :href => 'deep_nest.css'}
|
4
|
+
%body
|
5
|
+
%div
|
6
|
+
%p Inner content
|
7
|
+
%a Inner content
|
8
|
+
%div.red
|
9
|
+
%p Inner content
|
10
|
+
%a Inner content
|
11
|
+
%div.blue
|
12
|
+
%p Inner content
|
13
|
+
%a Inner content
|
14
|
+
%div.black
|
15
|
+
%p Inner content
|
16
|
+
%a Inner content
|
17
|
+
%div.white
|
18
|
+
%p Inner content
|
19
|
+
%a Inner content
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>["div"], :tab=>0, :haml=>["%div"]}, {:line=>2, :select=>["p"], :tab=>1, :haml=>["%p"]}, {:line=>3, :select=>["a"], :tab=>1, :haml=>["%a"]}, {:line=>4, :select=>["div.red", "div.blue"], :tab=>0, :parent=>1, :haml=>["%div.red", "%div.blue"]}, {:line=>5, :select=>["div.black", "div.white"], :tab=>0, :parent=>1, :haml=>["%div.black", "%div.white"]}]
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
<html>
|
2
|
+
<head>
|
3
|
+
<link href='deep_nest.css' rel='stylesheet' type='text/css' />
|
4
|
+
</head>
|
5
|
+
<body>
|
6
|
+
<div>
|
7
|
+
<p>Inner content</p>
|
8
|
+
<a>Inner content</a>
|
9
|
+
</div>
|
10
|
+
<div class='red'>
|
11
|
+
<p>Inner content</p>
|
12
|
+
<a>Inner content</a>
|
13
|
+
</div>
|
14
|
+
<div class='blue'>
|
15
|
+
<p>Inner content</p>
|
16
|
+
<a>Inner content</a>
|
17
|
+
</div>
|
18
|
+
<div class='black'>
|
19
|
+
<p>Inner content</p>
|
20
|
+
<a>Inner content</a>
|
21
|
+
</div>
|
22
|
+
<div class='white'>
|
23
|
+
<p>Inner content</p>
|
24
|
+
<a>Inner content</a>
|
25
|
+
</div>
|
26
|
+
</body>
|
27
|
+
</html>
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".bar p"], :tab=>0}, {:line=>2, :select=>[".buz p b"], :tab=>0}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".bar p"], :tab=>0, :haml=>["%div.bar %p"]}, {:line=>2, :select=>[".buz p b"], :tab=>0, :haml=>["%div.buz %p %b"]}]
|
File without changes
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".foo"], :tab=>0}, {:line=>2, :select=>[".bar"], :tab=>1}, {:line=>3, :select=>[".baz"], :tab=>2}]
|
@@ -0,0 +1 @@
|
|
1
|
+
[{:line=>1, :select=>[".foo"], :tab=>0, :haml=>["%div.foo"]}, {:line=>2, :select=>[".bar"], :tab=>1, :haml=>["%div.bar"]}, {:line=>3, :select=>[".baz"], :tab=>2, :haml=>["%div.baz"]}]
|
File without changes
|