trekky 0.0.4 → 0.0.5

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: 390f90e19c233cd7d43cd50f0529294d81ef92e8
4
- data.tar.gz: df0ae3e0f3be95610d90e039949f017fcd5593c8
3
+ metadata.gz: 658ace6e980518452b3b20e7523eca8da443d715
4
+ data.tar.gz: 2b7543546f879aa19b6ea310ce2ec9191caf209c
5
5
  SHA512:
6
- metadata.gz: bf4f75bcc8e9eaa547b9c715fd5f0a9d041d67a651b6ac7d1222cdf6b97c87e86fa7b46b034eb6aa298ef0f3341ff18da6360b6462a8ec437f3e329c28d83d1e
7
- data.tar.gz: 89a0941b374a5cacf4686b858edfd6b477a4e2b1f1ac34b117a68962c9162b62f57540ebc6810b17e14240e8ed9883c0d7e59c3a787b6134a9ef5956cae37555
6
+ metadata.gz: 9de6ab2de5dca2eb8707155a8317f84708a972b4df5449e283627d056c2d2b8d1f16ba7f10886c1408396389948491ca739a515474ec9a1e4f269bfb1024d34b
7
+ data.tar.gz: d7e7049202d3dba5d361925badafc3e374d07fd99b9a2f9efdc69a6d2d2f12cf89a050370e4743080a20eb36adde2c870c37b7a6d1dcddc6612b491e2c3191a9
@@ -9,9 +9,9 @@ class Trekky
9
9
 
10
10
  def render_to(target_dir)
11
11
  @context.sources.each do |source|
12
- output = source.render
13
12
  path = target_path(target_dir, source)
14
-
13
+ output = source.render
14
+ output = source.render_errors unless source.valid?
15
15
  STDOUT.puts "Writing #{source.path} to #{path}"
16
16
  write(output, path)
17
17
  end
@@ -20,7 +20,7 @@ class Trekky
20
20
  private
21
21
 
22
22
  def target_path(target_dir, source)
23
- path = File.join(target_dir, source.path.gsub(source_dir, ''))
23
+ path = File.join(target_dir, source.path.gsub(@context.source_dir, ''))
24
24
  if type = source.type
25
25
  path.gsub(/\.#{type}/, '')
26
26
  else
@@ -33,8 +33,4 @@ class Trekky
33
33
  File.open(path, "wb") {|f| f.write(output) }
34
34
  end
35
35
 
36
- def source_dir
37
- @context.source_dir
38
- end
39
-
40
36
  end
@@ -12,24 +12,26 @@ class Trekky
12
12
  end
13
13
 
14
14
  def render(options = {}, &block)
15
- if block_given? || options[:layout] == false
15
+ clear_errors
16
+ @output = if block_given? || options[:layout] == false
16
17
  render_input(&block)
17
18
  else
18
- output = render_input
19
+ buffer = render_input
19
20
  if layout
20
21
  layout.render do |name|
21
22
  if regions.has_key?(name)
22
23
  regions[name]
23
24
  else
24
- output
25
+ buffer
25
26
  end
26
27
  end
27
28
  else
28
- output
29
+ buffer
29
30
  end
30
31
  end
31
32
  rescue Exception => error
32
- render_error(error)
33
+ STDOUT.puts "Adding error: #{error.message}"
34
+ add_error error
33
35
  end
34
36
 
35
37
  def partial(name)
@@ -64,14 +66,5 @@ class Trekky
64
66
  @context.layouts.first
65
67
  end
66
68
 
67
- def render_error(e)
68
- STDERR.puts "Error #{e.message}"
69
- e.backtrace.each do |line|
70
- STDERR.puts " #{line}"
71
- end
72
- nil
73
- end
74
-
75
69
  end
76
-
77
70
  end
@@ -3,10 +3,27 @@ require 'sass'
3
3
 
4
4
  class Trekky
5
5
  class SassSource < Source
6
+ HTML_ESCAPE_ONCE_REGEXP = /["><']|&(?!([a-zA-Z]+|(#\d+));)/
7
+ HTML_ESCAPE = {
8
+ '&' => '&amp;',
9
+ '>' => '&gt;',
10
+ '<' => '&lt;',
11
+ '"' => '&quot;',
12
+ "'" => '&#39;'
13
+ }
6
14
 
7
15
  def render
16
+ clear_errors
8
17
  Sass.load_paths << @context.source_dir
9
- Sass::Engine.new(input, options).render
18
+ @output = Sass::Engine.new(input, options).render
19
+ rescue Exception => error
20
+ STDOUT.puts "Adding error: #{error.message}"
21
+ add_error error
22
+ end
23
+
24
+ def render_error(error)
25
+ input = error.message.to_s.gsub(HTML_ESCAPE_ONCE_REGEXP, HTML_ESCAPE)
26
+ sprintf('body::before{ content:"%s" }', input)
10
27
  end
11
28
 
12
29
  def options
@@ -2,21 +2,20 @@ class Trekky
2
2
 
3
3
  class Source
4
4
 
5
+ attr_reader :output, :context, :path, :errors
6
+
5
7
  def initialize(context, path)
6
8
  @path = path
7
9
  @context = context
10
+ @errors = []
8
11
  end
9
12
 
10
13
  def render(&block)
11
- raise NotImplementedError
12
- end
13
-
14
- def path
15
- @path
14
+ raise NotImplementedError
16
15
  end
17
16
 
18
- def context
19
- @context
17
+ def valid?
18
+ @errors.empty?
20
19
  end
21
20
 
22
21
  def type
@@ -31,5 +30,31 @@ class Trekky
31
30
  File.read(path)
32
31
  end
33
32
 
33
+ def add_error(error)
34
+ @errors << error
35
+ nil
36
+ end
37
+
38
+ def clear_errors
39
+ @errors = []
40
+ end
41
+
42
+ def render_errors
43
+ @errors.map do |error|
44
+ render_error(error)
45
+ end.join("<br/>")
46
+ end
47
+
48
+ def render_error(error)
49
+ Haml::Engine.new(<<-INPUT.gsub(" "*8, "")).render(self, {error: error})
50
+ %h1 File: #{path}
51
+ %h3 Error: #{error.message}
52
+ %pre
53
+ %code
54
+ - error.backtrace.each do |line|
55
+ = line
56
+ %br
57
+ INPUT
58
+ end
34
59
  end
35
- end
60
+ end
@@ -5,7 +5,8 @@ class Trekky
5
5
  class StaticSource < Source
6
6
 
7
7
  def render
8
- input
8
+ clear_errors
9
+ @output = input
9
10
  end
10
11
 
11
12
  def type
metadata CHANGED
@@ -1,69 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: trekky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Florio
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-15 00:00:00.000000000 Z
11
+ date: 2014-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: clap
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - ~>
18
18
  - !ruby/object:Gem::Version
19
19
  version: '1.0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - ~>
25
25
  - !ruby/object:Gem::Version
26
26
  version: '1.0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: sass
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - ~>
32
32
  - !ruby/object:Gem::Version
33
33
  version: '3.3'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: '3.3'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: haml
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ~>
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ~>
53
53
  - !ruby/object:Gem::Version
54
54
  version: '4.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rb-fsevent
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - ~>
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0.9'
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - ~>
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.9'
69
69
  description: Simple, very simple, sass and haml compiler.
@@ -92,17 +92,17 @@ require_paths:
92
92
  - lib
93
93
  required_ruby_version: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ">="
95
+ - - '>='
96
96
  - !ruby/object:Gem::Version
97
97
  version: '0'
98
98
  required_rubygems_version: !ruby/object:Gem::Requirement
99
99
  requirements:
100
- - - ">="
100
+ - - '>='
101
101
  - !ruby/object:Gem::Version
102
102
  version: '0'
103
103
  requirements: []
104
104
  rubyforge_project:
105
- rubygems_version: 2.2.2
105
+ rubygems_version: 2.0.14
106
106
  signing_key:
107
107
  specification_version: 4
108
108
  summary: Simple, very simple, sass and haml compiler for dear designer friend.