jekyll-pug 1.0.1 → 1.5.0

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.
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