octopress-ink 1.0.0.rc.32 → 1.0.0.rc.33

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: 85686fc2ea1d6853f85597565f2932c8e0dd39fa
4
- data.tar.gz: d4eb14410553f6f06286c4b0662ccba05139fe3f
3
+ metadata.gz: 49935f281c619ea34057f2b4eea60512a8d8062a
4
+ data.tar.gz: e780dfe3bcecb73fb38b9fc4ca7aa44f946ea26c
5
5
  SHA512:
6
- metadata.gz: 9f413e4a9c176b2b36a9dbe2aa0d04f5980cb8b8be9b4087b1b37bdda8643ca63b783bc5288fce0a3c98b4a26a0b47325ef577c4bd978d56573c436560f1a8d3
7
- data.tar.gz: 8fc3b07109b9833163eebfd2215f569665b247342b93b4f6aa220d8d8be3cd8f2c8c64e602121f3f1b3963767f82b6628dcbb80d8b02019fe2e779acd74dba17
6
+ metadata.gz: 4cc25011f558aaeffb54cb55144d527be812fcc5478e6c3c797f13fbc930d45b978e919fd23f077222d874a0fc0deb2c6396c34dd9bd9dc300e25964384243f3
7
+ data.tar.gz: b76a45423d4d786ec4fb7aeaa959b06f5de383c7d69fc231542b803d8259f8af6a075a083570455e9e7e4d4488539b9be45e03767c35fe47979a3541f534464d
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Changelog
2
2
 
3
+ ### 1.0.0 RC33 - 2015-01-28
4
+
5
+ - Fix: Doesn't assume site plugin path is in site source directory. Thanks [@drallgood](https://github.com/octopress/feeds/issues/10)!
6
+
3
7
  ### 1.0.0 RC32 - 2015-01-26
8
+
4
9
  - Minor change: Moved plugin requiring out to Octopress gem.
5
10
 
6
11
  ### 1.0.0 RC31 - 2015-01-26
data/lib/octopress-ink.rb CHANGED
@@ -11,6 +11,7 @@ require 'octopress-ink/version'
11
11
  require 'octopress-ink/configuration'
12
12
  require 'octopress-ink/jekyll/hooks'
13
13
  require 'octopress-ink/tags/set_lang'
14
+ require 'octopress-ink/cache'
14
15
 
15
16
  module Octopress
16
17
  module Ink
@@ -103,43 +103,28 @@ module Octopress
103
103
  end
104
104
 
105
105
  def content
106
- unless @content
106
+ @content ||= begin
107
107
  if read =~ FRONT_MATTER
108
- @content = $POSTMATCH
108
+ $POSTMATCH
109
109
  else
110
- @content = read
110
+ read
111
111
  end
112
112
  end
113
- @content
114
- end
115
-
116
- # Render file through Liquid if it contains YAML front-matter
117
- #
118
- def render
119
- unless @rendered_content
120
- if asset_payload = payload
121
- @rendered_content = Liquid::Template.parse(content).render!(payload)
122
- else
123
- @rendered_content = content
124
- end
125
- end
126
-
127
- @rendered_content
128
113
  end
129
114
 
130
115
  def payload
131
- unless @payload
132
- @payload = Ink.payload
133
- @payload['jekyll'] = {
116
+ @payload ||= begin
117
+ p = Ink.payload
118
+ p['jekyll'] = {
134
119
  'version' => Jekyll::VERSION,
135
120
  'environment' => Jekyll.env
136
121
  }
137
- @payload['site'] = Octopress.site.config
138
- @payload['site']['data'] = Octopress.site.site_data
139
- @payload['page'] = data
140
- end
122
+ p['site'] = Octopress.site.config
123
+ p['site']['data'] = Octopress.site.site_data
124
+ p['page'] = data
141
125
 
142
- @payload
126
+ p
127
+ end
143
128
  end
144
129
 
145
130
  def data
@@ -153,7 +138,7 @@ module Octopress
153
138
  private
154
139
 
155
140
  def source_dir
156
- if exists? user_override_path
141
+ if exists? user_path
157
142
  user_dir
158
143
  else
159
144
  plugin_dir
@@ -169,19 +154,15 @@ module Octopress
169
154
  end
170
155
 
171
156
  def user_dir
172
- File.join Octopress.site.source, Plugins.custom_dir, dir
157
+ File.join Plugins.custom_dir, dir
173
158
  end
174
159
 
175
160
  def local_plugin_path
176
161
  File.join Octopress.site.source, dir, file
177
162
  end
178
163
 
179
- def user_override_path
180
- File.join user_dir, filename
181
- end
182
-
183
164
  def user_path
184
- user_override_path
165
+ File.join user_dir, filename
185
166
  end
186
167
 
187
168
  def file_check
@@ -2,13 +2,17 @@ module Octopress
2
2
  module Ink
3
3
  module Assets
4
4
  class Coffeescript < Javascript
5
+ def tag
6
+ "<script src='#{Filters.expand_url(File.join(dir, file.sub(/\.coffee$/,'.js')))}'></script>"
7
+ end
8
+
5
9
  def add
6
10
  Plugins.add_js_tag tag
7
- Plugins.static_files << StaticFileContent.new(compile, destination)
11
+ Plugins.static_files << StaticFileContent.new(content, destination)
8
12
  end
9
13
 
10
- def compile
11
- ::CoffeeScript.compile(content)
14
+ def content
15
+ ::CoffeeScript.compile(super)
12
16
  end
13
17
 
14
18
  def destination
@@ -39,11 +39,7 @@ module Octopress
39
39
  end
40
40
 
41
41
  def page
42
- unless @page
43
-
44
- @page = Page.new(Octopress.site, source_dir, page_dir, file, plugin.config)
45
- end
46
- @page
42
+ @page ||= Page.new(Octopress.site, source_dir, page_dir, file, plugin.config)
47
43
  end
48
44
 
49
45
  def info
@@ -2,6 +2,8 @@ module Octopress
2
2
  module Ink
3
3
  module Assets
4
4
  class Sass < Stylesheet
5
+ attr_accessor :exists, :render
6
+
5
7
  def initialize(plugin, base, file)
6
8
  @plugin = plugin
7
9
  @base = base
@@ -13,14 +15,10 @@ module Octopress
13
15
  file_check
14
16
  end
15
17
 
16
- def tag
17
- "<link href='#{Filters.expand_url(File.join(dir, output_file_name))}' media='#{@media}' rel='stylesheet' type='text/css'>"
18
- end
19
-
20
18
  def add
21
19
  unless File.basename(file).start_with?('_')
22
20
  Plugins.add_css_tag tag
23
- Plugins.static_files << StaticFileContent.new(compile, destination)
21
+ Plugins.static_files << StaticFileContent.new(content, destination)
24
22
  end
25
23
  end
26
24
 
@@ -38,7 +36,16 @@ module Octopress
38
36
  is_disabled('sass', filename) || is_disabled('stylesheets', filename)
39
37
  end
40
38
 
41
- def compile
39
+ def content
40
+ @render ||= begin
41
+ contents = super
42
+ if asset_payload = payload
43
+ Liquid::Template.parse(contents).render!(payload)
44
+ else
45
+ contents
46
+ end
47
+ end
48
+
42
49
  PluginAssetPipeline.compile_sass(self)
43
50
  end
44
51
 
@@ -49,14 +56,14 @@ module Octopress
49
56
  private
50
57
 
51
58
  def user_load_path
52
- File.join(Octopress.site.source, Plugins.custom_dir, dir, File.dirname(file)).sub /\/\.$/, ''
59
+ File.join(Plugins.custom_dir, dir, File.dirname(file)).sub /\/\.$/, ''
53
60
  end
54
61
 
55
62
  def theme_load_path
56
63
  File.expand_path(File.join(root, base))
57
64
  end
58
65
 
59
- def user_override_path
66
+ def user_path
60
67
  # Allow Sass overrides to use either syntax
61
68
  if file =~ /s[ac]ss$/
62
69
  [File.join(user_dir, file), File.join(user_dir, alt_syntax_file)]
@@ -0,0 +1,41 @@
1
+ module Octopress
2
+ module Ink
3
+ module Cache
4
+ extend self
5
+
6
+ INK_CACHE_DIR = '.ink-cache'
7
+ @cache_files = []
8
+
9
+ def read_cache(asset, options)
10
+ path = get_cache_path(INK_CACHE_DIR, cache_label(asset), options.to_s << asset.content)
11
+ @cache_files << path
12
+ File.exist?(path) ? File.read(path) : nil unless path.nil?
13
+ end
14
+
15
+ def write_to_cache(asset, content, options)
16
+ FileUtils.mkdir_p(INK_CACHE_DIR) unless File.directory?(INK_CACHE_DIR)
17
+ path = get_cache_path(INK_CACHE_DIR, cache_label(asset), options.to_s << asset.content)
18
+ File.open(path, 'w') do |f|
19
+ f.print(content)
20
+ end
21
+ content
22
+ end
23
+
24
+ def cache_label(asset)
25
+ "#{asset.plugin.slug}-#{File.basename(asset.file, '.*').downcase}"
26
+ end
27
+
28
+ def get_cache_path(dir, label, str)
29
+ File.join(dir, "#{label}#{Digest::MD5.hexdigest(str)}.js")
30
+ end
31
+
32
+ def clean
33
+ remove = Find.find(INK_CACHE_DIR).to_a.reject do |file|
34
+ @cache_files.include?(file) || File.directory?(file)
35
+ end
36
+
37
+ FileUtils.rm remove
38
+ end
39
+ end
40
+ end
41
+ end
@@ -16,6 +16,8 @@ module Octopress
16
16
  Octopress::Ink::Plugins.static_files.each do |f|
17
17
  f.write(site.dest)
18
18
  end
19
+
20
+ Octopress::Ink::Cache.clean
19
21
  end
20
22
  end
21
23
  end
@@ -354,11 +354,9 @@ module Octopress
354
354
 
355
355
  def add_javascripts
356
356
  find_assets(@javascripts_dir).each do |asset|
357
- if asset =~ /\.min\.js$/
358
- @no_compress_js << Assets::Javascript.new(self, @javascripts_dir, asset)
359
- elsif asset =~ /\.js$/
357
+ if asset.end_with?('js')
360
358
  @js << Assets::Javascript.new(self, @javascripts_dir, asset)
361
- elsif File.extname(asset) =~ /\.coffee$/
359
+ elsif asset.end_with?('coffee')
362
360
  @coffee << Assets::Coffeescript.new(self, @javascripts_dir, asset)
363
361
  end
364
362
  end
@@ -54,7 +54,7 @@ module Octopress
54
54
  end
55
55
 
56
56
  def self.combined_javascript_tag
57
- unless combine_javascripts == ''
57
+ unless @combined_js == ''
58
58
  "<script src='#{Filters.expand_url(combined_javascript_path)}'></script>"
59
59
  end
60
60
  end
@@ -77,7 +77,7 @@ module Octopress
77
77
  header = "/* #{file.plugin.type.capitalize}: #{file.plugin.name} */"
78
78
  combined[media] ||= ''
79
79
  combined[media] << "#{header}\n" unless combined[media] =~ /#{file.plugin.name}/
80
- combined[media] << (file.ext.match(/\.s[ca]ss/) ? file.compile : file.content)
80
+ combined[media] << file.content
81
81
  end
82
82
  end
83
83
 
@@ -130,32 +130,9 @@ module Octopress
130
130
  Plugins.plugins.clone.map(&:javascripts).flatten
131
131
  end
132
132
 
133
- def self.no_compress_js
134
- @no_compress_js ||= Plugins.plugins.clone.map(&:no_compress_js).flatten
135
- end
136
-
137
133
  def self.javascript_fingerprint
138
134
  @javascript_fingerprint ||=
139
- fingerprint(javascripts.clone.concat(no_compress_js).map(&:path))
140
- end
141
-
142
- def self.combine_javascripts
143
- @combined_javascripts ||= combine_js(javascripts)
144
- end
145
-
146
- def self.combine_no_compress_javascripts
147
- @combined_no_compress_javascripts ||= combine_js(no_compress_js) || ''
148
- end
149
-
150
- def self.combine_js(files)
151
- js = ''
152
- files.each do |file|
153
- unless js =~ /#{file.plugin.name}/
154
- js << "/* #{file.plugin.type.capitalize}: #{file.plugin.name} */\n"
155
- end
156
- js << (file.ext.match(/.coffee/) ? file.compile : file.content)
157
- end
158
- (js == '' ? false : js)
135
+ fingerprint(javascripts.clone.map(&:path))
159
136
  end
160
137
 
161
138
  def self.combined_javascript_path
@@ -163,17 +140,40 @@ module Octopress
163
140
  end
164
141
 
165
142
  def self.write_combined_javascript
166
- @combined_javascripts = nil
167
- if js = combine_javascripts
168
- if Ink.configuration['asset_pipeline']['compress_js']
169
- settings = Jekyll::Utils.symbolize_hash_keys(Ink.configuration['asset_pipeline']['uglifier'])
170
- js = Uglifier.new(settings).compile(js)
143
+ @combined_js = ''
144
+
145
+ if Ink.configuration['asset_pipeline']['combine_js']
146
+ javascripts.each do |file|
147
+
148
+ js = if compress_js?(file)
149
+ @uglify_settings ||= Jekyll::Utils.symbolize_hash_keys(Ink.configuration['asset_pipeline']['uglifier'])
150
+
151
+ if cached = Cache.read_cache(file, @uglify_settings)
152
+ cached
153
+ else
154
+ js = Uglifier.new(@uglify_settings).compile(file.content)
155
+ Cache.write_to_cache(file, js, @uglify_settings)
156
+ end
157
+ else
158
+ file.content
159
+ end
160
+
161
+ unless @combined_js =~ /#{file.plugin.name}/
162
+ @combined_js << "/* #{file.plugin.type.capitalize}: #{file.plugin.name} */\n"
163
+ end
164
+ @combined_js << js
165
+ end
166
+
167
+ unless @combined_js == ''
168
+ write_files(@combined_js, combined_javascript_path)
171
169
  end
172
- js = combine_no_compress_javascripts << js
173
- write_files(js, combined_javascript_path)
174
170
  end
175
171
  end
176
172
 
173
+ def self.compress_js?(file)
174
+ Ink.configuration['asset_pipeline']['compress_js'] && !file.file.end_with?('.min.js')
175
+ end
176
+
177
177
  def self.write_files(source, dest)
178
178
  Plugins.static_files << StaticFileContent.new(source, dest)
179
179
  end
@@ -111,7 +111,7 @@ module Octopress
111
111
  # Read plugin dir from site configs
112
112
  #
113
113
  def self.custom_dir
114
- Octopress.site.config['plugins']
114
+ Octopress.site.plugin_manager.plugins_path.first
115
115
  end
116
116
 
117
117
  # Copy/Generate Stylesheets
@@ -1,5 +1,5 @@
1
1
  module Octopress
2
2
  module Ink
3
- VERSION = "1.0.0.rc.32"
3
+ VERSION = "1.0.0.rc.33"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: octopress-ink
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc.32
4
+ version: 1.0.0.rc.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - Brandon Mathis
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-26 00:00:00.000000000 Z
11
+ date: 2015-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: jekyll
@@ -177,6 +177,7 @@ files:
177
177
  - lib/octopress-ink/assets/page.rb
178
178
  - lib/octopress-ink/assets/sass.rb
179
179
  - lib/octopress-ink/assets/stylesheet.rb
180
+ - lib/octopress-ink/cache.rb
180
181
  - lib/octopress-ink/commands.rb
181
182
  - lib/octopress-ink/commands/copy.rb
182
183
  - lib/octopress-ink/commands/helpers.rb