jekyll-pug 1.0.1 → 1.5.0

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: 789f02d4a0ae2b503cffc2f301973b7693bc3bf0
4
- data.tar.gz: ea04627a3582d8f227013a70048eb19408f14685
3
+ metadata.gz: 2545440203a83d292340950b7a17ddaa30dfe9c2
4
+ data.tar.gz: 51717567bb516056ebb2e9af0f4a327df5fed2dd
5
5
  SHA512:
6
- metadata.gz: 2067d674cb6801d6eb4b3944c570db65b08649bc7cb3b09cdebf023e3eb3352bf3a89b85aac381c5989ae7be582354ae2c0c2be7e40ea6aa899696bc05a2d734
7
- data.tar.gz: a76dcd86d7463c2aa844da19fce441e1a65ca4bdca253fdc89cb411237204ab64704c631d428a0176d41cb259375a44244177a9c748fa64e59741a581d36e341
6
+ metadata.gz: c021d09c76298635aac255ed90e7f65a330ae60698189322a4256d8e7d1181ec261668bc31f399071efc9a0b2128df1c741174b7546cd394ce71561d86c0f82d
7
+ data.tar.gz: 9d72b78f4732811ca97f52811a5bf180b0ad219955d0653ab45cbca14e1245b9907e641b52f024b7f934deff84a9f741992b1c5fbe4dd97364a13a31d8d31d69
data/lib/jekyll-pug.rb CHANGED
@@ -3,10 +3,10 @@ require "jekyll-pug/pug-renderer"
3
3
  require "jekyll-pug/include-tag"
4
4
 
5
5
  # Enable/Disable Minfify based on the user's config file.
6
- jekyllConfig = Jekyll.configuration({})
6
+ $jekyllConfig = Jekyll.configuration({})
7
7
 
8
- if jekyllConfig['jekyll-pug']
9
- if jekyllConfig['jekyll-pug']['minify']
8
+ if $jekyllConfig['jekyll-pug']
9
+ if $jekyllConfig['jekyll-pug']['minify']
10
10
  # Minify is enabled - pretty disabled
11
11
  Pug.config.pretty = false
12
12
  else
@@ -19,8 +19,8 @@ else
19
19
  end
20
20
 
21
21
  config_source = ""
22
- if jekyllConfig['source']
23
- config_source = jekyllConfig['source']
22
+ if $jekyllConfig['source']
23
+ config_source = $jekyllConfig['source']
24
24
  end
25
25
 
26
26
  $JEKYLLPUG_PROJECT_SOURCE = File.join(config_source, '_includes/.')
@@ -1,41 +1,149 @@
1
- # This is where the magic happens
1
+ # # # # # # # # # # # #
2
+ # Jekyll-Pug-Renderer #
3
+ # # # # # # # # # # # #
4
+
5
+ # Simple function= to print data if debug is true.
6
+
7
+ $jekyll_pug_curFile = ""
8
+
9
+ def jp(string)
10
+ if $jekyllConfig['jekyll-pug']
11
+ if $jekyllConfig['jekyll-pug']['debug']
12
+ puts "[Jekyll-Pug] " + $jekyll_pug_curFile.to_s + " " + string.to_s
13
+ end
14
+ end
15
+ end
16
+
17
+ def create_cache_and_compile(content, cached_file)
18
+ userSource = $JEKYLLPUG_PROJECT_SOURCE
19
+ pug_raw = content
20
+ content = Pug.compile(content, {"filename"=>userSource})
21
+ ::File.write(cached_file, pug_raw)
22
+ ::File.write(cached_file+".html", content)
23
+ return content
24
+ end
25
+
26
+ def create_cache(content, cached_file)
27
+ ::File.write(cached_file, content)
28
+ end
29
+
2
30
  module Jekyll
3
- class LiquidRenderer
4
- File.class_eval do
5
- def parse(content)
6
- measure_time do
7
- if @filename =~ /\.pug$/
8
- userSource = $JEKYLLPUG_PROJECT_SOURCE
9
- content = Pug.compile(content, {"filename"=>userSource})
31
+ class LiquidRenderer
32
+ File.class_eval do
33
+ def parse(content)
34
+ if @filename =~ /\.pug$/
35
+ filename_regex = /[a-zA-Z1-9\s\~\-\.\_\%\#\&\*\{\}\:\?\+\|\<\>\"\']+.pug/
36
+
37
+ $jekyll_pug_curFile = @filename.match(filename_regex)
38
+ jp("Processing Pug file.")
39
+
40
+ # Creating Cache Variables
41
+ cache_dir = ".pug-cache/"
42
+ cached_file = cache_dir + @filename
43
+ cached_file_dir = cached_file.sub(filename_regex, '')
44
+
45
+ # Creating cache directory neccesary (if needed)
46
+ FileUtils.mkdir_p(cached_file_dir) unless ::File.exists?(cached_file_dir)
47
+
48
+ # If cached pug file exists
49
+ if ::File.file?(cached_file)
50
+ jp("Cached file exists! Attempting to use it...")
51
+ cached_file_content = ::File.read(cached_file)
52
+
53
+ pugIncludeChange = false
54
+ # Check if Pug includes have changed.
55
+ # If Pug includes changed, we must recompile
56
+
57
+ # Loop through Pug includes to determine if any had been modified
58
+ includes_in_file = content.scan(/^\s+include\s[a-zA-Z1-9\/\_\-\.]+/)
59
+ for i in includes_in_file do
60
+ # Remove spaces/tabs in front of code
61
+ include_file = i.sub(/^\s+/, '')
62
+ # Remove include statement to be left with filename
63
+ include_file = include_file.sub(/include\s/, '')
64
+ # If no extension provided, add one
65
+ if include_file.scan(/.pug/).length == 0
66
+ include_file = include_file + ".pug"
67
+ end
68
+ jp("Checking the include " + include_file)
69
+ # Make the include file into an exact path into the user's project
70
+ include_file = $JEKYLLPUG_PROJECT_SOURCE + "/" + include_file
71
+ jp("The include file is " + include_file)
72
+ # Create the cached location of the include file and its path
73
+ include_cache_file = ".pug-cache/" + include_file
74
+ include_cache_file_dir = include_cache_file.sub(filename_regex, '')
75
+ # Make a cache folder for this include if not already created
76
+ FileUtils.mkdir_p(include_cache_file_dir) unless ::File.exists?(include_cache_file_dir)
77
+
78
+ # Read the file of the include
79
+ include_content = ::File.read(include_file)
80
+
81
+ # If cached version of include exists
82
+ if ::File.file?(include_cache_file)
83
+ jp("Cached file of include exists. Checking if modified...")
84
+ cached_include_content = ::File.read(include_cache_file)
85
+ if include_content == cached_include_content
86
+ jp("The include is identical to the cache. Not recompiling")
87
+ else
88
+ jp("There has been a change in an include")
89
+ pugIncludeChange = true
90
+ end
91
+ else
92
+ jp("Creating cache file for include...")
93
+ pugIncludeChange = true
94
+ create_cache(include_content, include_cache_file)
95
+ end
96
+ end
97
+
98
+ # If files are identical
99
+ if content == cached_file_content and not pugIncludeChange
100
+ jp("Cached file is identical and includes haven't changed. Using Cached file")
101
+ # If there is a cached HTML file availible
102
+ cached_html_filename = cached_file + ".html"
103
+ if ::File.file?(cached_html_filename)
104
+ content = ::File.read(cached_html_filename)
105
+ else
106
+ jp("Odd. The HTML cached file does not exist. Can't use cache right now. Creating it instead.")
107
+ content = create_cache_and_compile(content, cached_file)
108
+ end
109
+ # If not identical (There has been a change)
110
+ else
111
+ jp("There has been a change since last cache. Re-Caching...")
112
+ content = create_cache_and_compile(content, cached_file)
113
+ end
114
+ else
115
+ jp("No cached file availible. Creating one...")
116
+ content = create_cache_and_compile(content, cached_file)
117
+ end
118
+
119
+ end
120
+ if content.lines.first =~ /^$/
121
+ content = content.sub(/^$\n/, "")
122
+ end
123
+ measure_time do
124
+ @template = Liquid::Template.parse(content, :line_numbers => true)
125
+ end
10
126
  end
11
- # if content.lines.first =~ /^$/
12
- # content = content.sub(/^$\n/, "")
13
- # end
14
- @template = Liquid::Template.parse(content, :line_numbers => true)
15
127
  end
16
-
17
- self
18
- end
19
128
  end
20
- end
21
129
  end
22
130
 
23
131
  # This section ensures that Pug files are compiled as HTML.
24
132
  module Jekyll
25
- class PugConverter < Converter
26
- safe true
27
- priority :low
28
-
29
- def matches(ext)
30
- ext =~ /^\.pug$/i
31
- end
32
-
33
- def output_ext(ext)
34
- ".html"
35
- end
36
-
37
- def convert(content)
38
- return content
39
- end
40
- end
133
+ class PugConverter < Converter
134
+ safe true
135
+ priority :low
136
+
137
+ def matches(ext)
138
+ ext =~ /^\.pug$/i
139
+ end
140
+
141
+ def output_ext(ext)
142
+ ".html"
143
+ end
144
+
145
+ def convert(content)
146
+ return content
147
+ end
148
+ end
41
149
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jekyll-pug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Doug Beney