jekyll-haml-markup 0.1.0 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,40 +0,0 @@
1
- require 'haml'
2
-
3
- module Jekyll
4
- module Haml
5
- class Parser
6
-
7
- def initialize(config)
8
- unless defined?(Haml)
9
- Jekyll::External.require_with_graceful_fail "haml"
10
- end
11
- @config = config["lib-haml"] || {}
12
- setup
13
- end
14
-
15
- def setup
16
- make_accessible
17
- end
18
-
19
- def convert(content)
20
- document = ::Haml::Engine.new(content, @config)
21
- html_output = document.render
22
- if @config["show_warnings"]
23
- document.warnings.each do |warning|
24
- Jekyll.logger.warn "Haml warning:", warning
25
- end
26
- end
27
- html_output
28
- end
29
-
30
- private
31
- def make_accessible(hash = @config)
32
- hash.keys.each do |key|
33
- hash[key.to_sym] = hash[key]
34
- make_accessible(hash[key]) if hash[key].is_a?(Hash)
35
- end
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,51 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'jekyll/haml_renderer'
3
- require_relative 'haml_renderer/file'
4
- require_relative 'haml_renderer/table'
5
-
6
- module Jekyll
7
- class HamlRenderer
8
- def initialize(site)
9
- @site = site
10
- # Haml::Template.error_mode = @site.config["haml"]["error_mode"].to_sym
11
- reset
12
- end
13
-
14
- def reset
15
- @stats = {}
16
- end
17
-
18
- def file(filename)
19
- filename = @site.in_source_dir(filename).sub(
20
- %r!\A#{Regexp.escape(@site.source)}/!,
21
- ""
22
- )
23
-
24
- HamlRenderer::File.new(self, filename).tap do
25
- @stats[filename] ||= new_profile_hash
26
- @stats[filename][:count] += 1
27
- end
28
- end
29
-
30
- def increment_bytes(filename, bytes)
31
- @stats[filename][:bytes] += bytes
32
- end
33
-
34
- def increment_time(filename, time)
35
- @stats[filename][:time] += time
36
- end
37
-
38
- def stats_table(n = 50)
39
- HamlRenderer::Table.new(@stats).to_s(n)
40
- end
41
-
42
- def self.format_error(e, path)
43
- "#{e.message} in #{path}"
44
- end
45
-
46
- private
47
- def new_profile_hash
48
- Hash.new { |hash, key| hash[key] = 0 }
49
- end
50
- end
51
- end
@@ -1,54 +0,0 @@
1
- module Jekyll
2
- class HamlRenderer
3
- class File
4
- def initialize(renderer, filename)
5
- @renderer = renderer
6
- @filename = filename
7
- end
8
-
9
- def parse(content)
10
- measure_time do
11
- @template = ::Haml::Engine.new(content) #, :line_numbers => true)
12
- end
13
-
14
- self
15
- end
16
-
17
- def render(*args)
18
- measure_time do
19
- measure_bytes do
20
- @template.render(*args)
21
- end
22
- end
23
- end
24
-
25
- def render!(*args)
26
- measure_time do
27
- measure_bytes do
28
- @template = @template.render(*args)
29
- end
30
- end
31
- end
32
-
33
- def warnings
34
- [] # @template.warnings
35
- end
36
-
37
- private
38
-
39
- def measure_bytes
40
- yield.tap do |str|
41
- @renderer.increment_bytes(@filename, str.bytesize)
42
- end
43
- end
44
-
45
- def measure_time
46
- before = Time.now
47
- yield
48
- ensure
49
- after = Time.now
50
- @renderer.increment_time(@filename, after - before)
51
- end
52
- end
53
- end
54
- end
@@ -1,94 +0,0 @@
1
- module Jekyll
2
- class HamlRenderer::Table
3
- def initialize(stats)
4
- @stats = stats
5
- end
6
-
7
- def to_s(n = 50)
8
- data = data_for_table(n)
9
- widths = table_widths(data)
10
- generate_table(data, widths)
11
- end
12
-
13
- private
14
-
15
- def generate_table(data, widths)
16
- str = String.new("\n")
17
-
18
- table_head = data.shift
19
- str << generate_row(table_head, widths)
20
- str << generate_table_head_border(table_head, widths)
21
-
22
- data.each do |row_data|
23
- str << generate_row(row_data, widths)
24
- end
25
-
26
- str << "\n"
27
- str
28
- end
29
-
30
- def generate_table_head_border(row_data, widths)
31
- str = String.new("")
32
-
33
- row_data.each_index do |cell_index|
34
- str << "-" * widths[cell_index]
35
- str << "-+-" unless cell_index == row_data.length - 1
36
- end
37
-
38
- str << "\n"
39
- str
40
- end
41
-
42
- def generate_row(row_data, widths)
43
- str = String.new("")
44
-
45
- row_data.each_with_index do |cell_data, cell_index|
46
- str << if cell_index.zero?
47
- cell_data.ljust(widths[cell_index], " ")
48
- else
49
- cell_data.rjust(widths[cell_index], " ")
50
- end
51
-
52
- str << " | " unless cell_index == row_data.length - 1
53
- end
54
-
55
- str << "\n"
56
- str
57
- end
58
-
59
- def table_widths(data)
60
- widths = []
61
-
62
- data.each do |row|
63
- row.each_with_index do |cell, index|
64
- widths[index] = [ cell.length, widths[index] ].compact.max
65
- end
66
- end
67
-
68
- widths
69
- end
70
-
71
- def data_for_table(n)
72
- sorted = @stats.sort_by { |_, file_stats| -file_stats[:time] }
73
- sorted = sorted.slice(0, n)
74
-
75
- table = [%w(Filename Count Bytes Time)]
76
-
77
- sorted.each do |filename, file_stats|
78
- row = []
79
- row << filename
80
- row << file_stats[:count].to_s
81
- row << format_bytes(file_stats[:bytes])
82
- row << format("%.3f", file_stats[:time])
83
- table << row
84
- end
85
-
86
- table
87
- end
88
-
89
- def format_bytes(bytes)
90
- bytes /= 1024.0
91
- format("%.2fK", bytes)
92
- end
93
- end
94
- end
@@ -1,60 +0,0 @@
1
- require 'jekyll/renderer'
2
-
3
- module Jekyll
4
- class Renderer
5
- def render_document
6
- info = {
7
- :registers => { :site => site, :page => payload["page"] },
8
- }
9
- output = document.content
10
-
11
- if document.render_with_haml?
12
- Jekyll.logger.debug "Rendering Haml:", document.relative_path
13
- output = render_haml(output, payload, info, document.path)
14
- end
15
-
16
- if document.render_with_liquid?
17
- Jekyll.logger.debug "Rendering Liquid:", document.relative_path
18
- output = render_liquid(output, payload, info, document.path)
19
- end
20
-
21
- Jekyll.logger.debug "Rendering Markup:", document.relative_path
22
- output = convert(output)
23
- document.content = output
24
-
25
- if document.place_in_layout?
26
- Jekyll.logger.debug "Rendering Layout:", document.relative_path
27
- output = place_in_layouts(output, payload, info)
28
- end
29
-
30
- output
31
- end
32
-
33
- def render_haml(content, payload, info, path = nil)
34
- template = site.haml_renderer.file(path).parse(content)
35
- template.warnings.each do |e|
36
- Jekyll.logger.warn "Haml Warning:",
37
- HamlRenderer.format_error(e, path || document.relative_path)
38
- end
39
- template.render!(payload, info)
40
- end
41
-
42
- private
43
- def render_layout(output, layout, info)
44
- payload["content"] = output
45
- payload["layout"] = Utils.deep_merge_hashes(layout.data, payload["layout"] || {})
46
-
47
- if layout.render_with_haml?
48
- Jekyll.logger.debug "Rendering Haml:", layout.relative_path
49
- layout.content = ::Haml::Engine.new(layout.content).render
50
- end
51
-
52
- render_liquid(
53
- layout.content,
54
- payload,
55
- info,
56
- layout.relative_path
57
- )
58
- end
59
- end
60
- end
@@ -1,14 +0,0 @@
1
- require 'jekyll/site'
2
-
3
- module Jekyll
4
- class Site
5
- attr_reader :haml_renderer
6
-
7
- alias_method :pre_haml_initialize, :initialize
8
-
9
- def initialize(config)
10
- pre_haml_initialize(config)
11
- @haml_renderer = HamlRenderer.new(self)
12
- end
13
- end
14
- end
@@ -1,15 +0,0 @@
1
- require 'jekyll/tags/include'
2
-
3
- # frozen_string_literal: true
4
-
5
- module Jekyll
6
- module Tags
7
- class IncludeTag < Liquid::Tag
8
-
9
- def read_file(file, context)
10
- ::Haml::Engine.new(File.read(file, file_read_opts(context))).render
11
- end
12
-
13
- end
14
- end
15
- end