trekky 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b5916808c3dc5f3b7e58d225ac286ff2a725583
4
- data.tar.gz: eb4b9e60f0ebee6672880cc4553d6596c4ebe1e3
3
+ metadata.gz: a3f105a140b63b188cb68c6d4bd8f6cf2f77a7ce
4
+ data.tar.gz: e8b9ed82a66008e8c6ef344dd53335961cfa24b5
5
5
  SHA512:
6
- metadata.gz: d720da38047f75e238699081a0464f5b48974ca204b3f95c3d86ebab3b3ed5766ae9dc385d3c6478f0ba0dace73515c40d0d00fd3aeeed4643530ab292f97d3b
7
- data.tar.gz: 568a1a4026373dc18586101e1771815325c4a49e05cba97bec07d850ac987c0b334314eb294a0694366c1c920d02ac71f922f26d87201b3b2e0d1fd119076063
6
+ metadata.gz: 625341b4f4f9927a389ddb718484ff1131e999217573e7a9a435a0fae1f5c3097d2c2d1192613da7929b8c3f4ea422b3d499cda86df32e37c8601bd701b11aa9
7
+ data.tar.gz: c9083da525505bb422fddda8f777c12d38f54de49940fc2c06fe9a52009302e7e4412092780547f2f001030f23164e0e578e2b5eee689b9982d1d2e239c07318
data/README.md ADDED
@@ -0,0 +1,47 @@
1
+ trekky
2
+ ======
3
+
4
+ Simple, very simple, sass and haml compiler for dear designer friend.
5
+
6
+ ## Features
7
+
8
+ Say you have a file structure like this:
9
+
10
+ source
11
+ ├── images
12
+ │   └── image.jpg
13
+ ├── index.html.haml
14
+ ├── javascripts
15
+ │   └── app.js
16
+ ├── layouts
17
+ │   └── default.haml
18
+ └── stylesheets
19
+ └── hola.css.sass
20
+
21
+ And you run:
22
+
23
+ trekky -s source -t public
24
+
25
+ You'll end up having this:
26
+
27
+ public
28
+ ├── images
29
+ │   └── image.jpg
30
+ ├── index.html
31
+ ├── javascripts
32
+ │   └── app.js
33
+ └── stylesheets
34
+ └── hola.css
35
+
36
+ ## HELP
37
+
38
+ trekky -h
39
+ usage: trekky [-h] [-s source] [-t target]
40
+
41
+
42
+ ## Deamon mode
43
+
44
+ Monitors source dir for changes, and copy/process on demand to target dir.
45
+
46
+ trekky -d
47
+
data/lib/trekky.rb ADDED
@@ -0,0 +1,40 @@
1
+ require 'fileutils'
2
+ require 'trekky/context'
3
+
4
+ class Trekky
5
+
6
+ def initialize(source_dir)
7
+ @context = Context.new(source_dir)
8
+ end
9
+
10
+ def render_to(target_dir)
11
+ @context.sources.each do |source|
12
+ output = source.render
13
+ path = target_path(target_dir, source)
14
+
15
+ STDOUT.puts "Writing #{source.path} to #{path}"
16
+ write(output, path)
17
+ end
18
+ end
19
+
20
+ private
21
+
22
+ def target_path(target_dir, source)
23
+ path = File.join(target_dir, source.path.gsub(source_dir, ''))
24
+ if type = source.type
25
+ path.gsub(/\.#{type}/, '')
26
+ else
27
+ path
28
+ end
29
+ end
30
+
31
+ def write(output, path)
32
+ FileUtils.mkdir_p(File.dirname(path))
33
+ File.open(path, "wb") {|f| f.write(output) }
34
+ end
35
+
36
+ def source_dir
37
+ @context.source_dir
38
+ end
39
+
40
+ end
@@ -0,0 +1,69 @@
1
+ require 'trekky/haml_source'
2
+ require 'trekky/static_source'
3
+ require 'trekky/sass_source'
4
+
5
+ class Trekky
6
+ class Context
7
+
8
+ attr_reader :source_dir
9
+
10
+ def initialize(source_dir)
11
+ @source_dir = source_dir
12
+ @files = { layouts: [], partials: [], sources: [] }
13
+ build
14
+ end
15
+
16
+ def sources
17
+ @files[:sources]
18
+ end
19
+
20
+ def partials
21
+ @files[:partials]
22
+ end
23
+
24
+ def layouts
25
+ @files[:layouts]
26
+ end
27
+
28
+ def find_partial(name)
29
+ partials.find {|p| p.path == File.join(source_dir, name)}
30
+ end
31
+
32
+ private
33
+
34
+ def build
35
+ Dir.glob(File.join(source_dir, "**/*")).each do |path|
36
+
37
+ next if File.directory?(path)
38
+
39
+ source = build_source(path)
40
+
41
+ if path.include?("#{source_dir}/layouts")
42
+ @files[:layouts] << source
43
+ next
44
+ end
45
+
46
+ if File.basename(path)[0] == '_'
47
+ @files[:partials] << source
48
+ next
49
+ end
50
+
51
+ @files[:sources] << source
52
+ end
53
+ end
54
+
55
+ def build_source(path)
56
+ type = File.extname(path)[1..-1].intern
57
+ find_source_class(type).new(self, path)
58
+ end
59
+
60
+ def find_source_class(type)
61
+ types[type] || StaticSource
62
+ end
63
+
64
+ def types
65
+ { sass: SassSource, haml: HamlSource }
66
+ end
67
+
68
+ end
69
+ end
@@ -0,0 +1,73 @@
1
+ require 'haml'
2
+ require 'trekky/source'
3
+
4
+ class Trekky
5
+ class HamlSource < Source
6
+
7
+ attr_reader :regions
8
+
9
+ def initialize(context, path)
10
+ super
11
+ @regions = {}
12
+ end
13
+
14
+ def render(options = {}, &block)
15
+ if block_given? || options[:layout] == false
16
+ render_input(&block)
17
+ else
18
+ output = render_input
19
+ layout.render do |name|
20
+ if regions.has_key?(name)
21
+ regions[name]
22
+ else
23
+ output
24
+ end
25
+ end
26
+ end
27
+ rescue Exception => error
28
+ render_error(error)
29
+ end
30
+
31
+ def partial(name)
32
+ source = context.find_partial(name)
33
+ if source
34
+ source.render(layout: false)
35
+ else
36
+ STDERR.puts "[ERROR] Can't find partial: #{name}"
37
+ end
38
+ end
39
+
40
+ def content_for(name, &block)
41
+ return unless block_given?
42
+ regions[name] = capture_haml(&block)
43
+ end
44
+
45
+ def type
46
+ :haml
47
+ end
48
+
49
+ private
50
+
51
+ def render_input(&block)
52
+ Haml::Engine.new(input).render(self, locals, &block)
53
+ end
54
+
55
+ def locals
56
+ {}
57
+ end
58
+
59
+ def layout
60
+ @context.layouts.first
61
+ end
62
+
63
+ def render_error(e)
64
+ STDERR.puts "Error #{e.message}"
65
+ e.backtrace.each do |line|
66
+ STDERR.puts " #{line}"
67
+ end
68
+ nil
69
+ end
70
+
71
+ end
72
+
73
+ end
@@ -0,0 +1,16 @@
1
+ require 'trekky/source'
2
+ require 'sass'
3
+
4
+ class Trekky
5
+ class SassSource < Source
6
+
7
+ def render
8
+ Sass::Engine.new(input, :syntax => :sass).render
9
+ end
10
+
11
+ def type
12
+ :sass
13
+ end
14
+
15
+ end
16
+ end
@@ -0,0 +1,35 @@
1
+ class Trekky
2
+
3
+ class Source
4
+
5
+ def initialize(context, path)
6
+ @path = path
7
+ @context = context
8
+ end
9
+
10
+ def render(&block)
11
+ raise NotImplementedError
12
+ end
13
+
14
+ def path
15
+ @path
16
+ end
17
+
18
+ def context
19
+ @context
20
+ end
21
+
22
+ def type
23
+ extension[1..-1].intern
24
+ end
25
+
26
+ def extension
27
+ File.extname(path)
28
+ end
29
+
30
+ def input
31
+ File.read(path)
32
+ end
33
+
34
+ end
35
+ end
@@ -0,0 +1,16 @@
1
+ require 'haml'
2
+ require 'trekky/source'
3
+
4
+ class Trekky
5
+ class StaticSource < Source
6
+
7
+ def render
8
+ input
9
+ end
10
+
11
+ def type
12
+
13
+ end
14
+
15
+ end
16
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trekky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Florio
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: fs-event
56
+ name: rb-fsevent
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
@@ -74,7 +74,14 @@ executables:
74
74
  extensions: []
75
75
  extra_rdoc_files: []
76
76
  files:
77
+ - README.md
77
78
  - bin/trekky
79
+ - lib/trekky.rb
80
+ - lib/trekky/context.rb
81
+ - lib/trekky/haml_source.rb
82
+ - lib/trekky/sass_source.rb
83
+ - lib/trekky/source.rb
84
+ - lib/trekky/static_source.rb
78
85
  homepage: http://github.com/lucasefe/trekky
79
86
  licenses:
80
87
  - MIT