Class: Octopress::Ink::Assets::Asset

Inherits:
Object
  • Object
show all
Defined in:
lib/octopress-ink/assets/asset.rb

Constant Summary collapse

FRONT_MATTER =
/\A(---\s*\n.*?\n?)^((---|\.\.\.)\s*$\n?)/m

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(plugin, base, file) ⇒ Asset

Returns a new instance of Asset.



10
11
12
13
14
15
16
17
18
# File 'lib/octopress-ink/assets/asset.rb', line 10

def initialize(plugin, base, file)
  @file = file
  @base = base
  @plugin = plugin
  @root = plugin.assets_path
  @dir = File.join(plugin.slug, base)
  @exists = {}
  file_check
end

Instance Attribute Details

#baseObject (readonly)

Returns the value of attribute base.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def base
  @base
end

#dirObject (readonly)

Returns the value of attribute dir.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def dir
  @dir
end

#existsObject

Returns the value of attribute exists.



6
7
8
# File 'lib/octopress-ink/assets/asset.rb', line 6

def exists
  @exists
end

#fileObject (readonly)

Returns the value of attribute file.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def file
  @file
end

#pluginObject (readonly)

Returns the value of attribute plugin.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def plugin
  @plugin
end

#replacementObject (readonly)

Returns the value of attribute replacement.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def replacement
  @replacement
end

#rootObject (readonly)

Returns the value of attribute root.



5
6
7
# File 'lib/octopress-ink/assets/asset.rb', line 5

def root
  @root
end

Instance Method Details

#addObject



83
84
85
# File 'lib/octopress-ink/assets/asset.rb', line 83

def add
  Plugins.static_files << StaticFile.new(path, destination)
end

#asset_infoObject



24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/octopress-ink/assets/asset.rb', line 24

def asset_info
  message = filename.ljust(35)

  if replaced?
    message += "Replaced by #{@replacement} plugin"
  elsif disabled?
    message += "Disabled by configuration"
  elsif path.to_s != plugin_path
    shortpath = File.join(Plugins.custom_dir.sub(Dir.pwd,''), dir).sub('/','')
    message += "From: #{File.join(shortpath,filename)}"
  end
  
  message
end

#contentObject



119
120
121
122
123
124
125
126
127
# File 'lib/octopress-ink/assets/asset.rb', line 119

def content
  @content ||= begin
    if read =~ FRONT_MATTER
      $POSTMATCH
    else
      read
    end
  end
end

#copy(target_dir) ⇒ Object

Copy asset to user override directory



89
90
91
92
93
94
95
96
97
98
99
100
101
102
# File 'lib/octopress-ink/assets/asset.rb', line 89

def copy(target_dir)
  return unless exists? plugin_path

  if target_dir
    target_dir = File.join(target_dir, base)
  else
    target_dir = user_dir
  end

  FileUtils.mkdir_p File.join(target_dir, File.dirname(file))
  FileUtils.cp plugin_path, File.join(target_dir, file)
  target_dir.sub!(Dir.pwd+'/', '')
  "+ ".green + "#{File.join(target_dir, filename)}"
end

#dataObject



144
145
146
147
148
149
150
# File 'lib/octopress-ink/assets/asset.rb', line 144

def data
  if read =~ FRONT_MATTER
    SafeYAML.load($1)
  else
    {}
  end
end

#destinationObject



115
116
117
# File 'lib/octopress-ink/assets/asset.rb', line 115

def destination
  File.join(base, plugin.slug, file)
end

#disableObject



51
52
53
# File 'lib/octopress-ink/assets/asset.rb', line 51

def disable
  @disabled = true
end

#disabled?Boolean

Returns:

  • (Boolean)


43
44
45
# File 'lib/octopress-ink/assets/asset.rb', line 43

def disabled?
  @disabled || is_disabled(base, filename) || replaced?
end

#extObject



75
76
77
# File 'lib/octopress-ink/assets/asset.rb', line 75

def ext
  File.extname(filename)
end

#filenameObject



39
40
41
# File 'lib/octopress-ink/assets/asset.rb', line 39

def filename
  file
end

#infoObject



20
21
22
# File 'lib/octopress-ink/assets/asset.rb', line 20

def info
  "  - #{asset_info}"
end

#is_disabled(base, file) ⇒ Object



55
56
57
58
# File 'lib/octopress-ink/assets/asset.rb', line 55

def is_disabled(base, file)
  config = @plugin.config['disable']
  config.include?(base) || config.include?(File.join(base, filename))
end

#pathObject



60
61
62
63
64
65
66
67
68
69
70
71
72
73
# File 'lib/octopress-ink/assets/asset.rb', line 60

def path
  @path ||= begin
    files = []
    files << user_path
    files << plugin_path
    files = files.flatten.reject { |f| !exists? f }

    if files.empty?
      raise IOError.new "Could not find #{File.basename(file)} at #{file}"
    end

    files[0]
  end
end

#payloadObject



129
130
131
132
133
134
135
136
137
138
139
140
141
142
# File 'lib/octopress-ink/assets/asset.rb', line 129

def payload
  @payload ||= begin
    p = Ink.payload
    p['jekyll'] = {
      'version' => Jekyll::VERSION,
      'environment' => Jekyll.env
    }
    p['site'] = Octopress.site.config
    p['site']['data'] = Octopress.site.site_data
    p['page'] = data

    p
  end
end

#readObject



79
80
81
# File 'lib/octopress-ink/assets/asset.rb', line 79

def read
  File.read(path)
end

#remove_jekyll_assetObject

Remove files from Jekyll’s static_files array so it doesn’t end up in the compiled site directory.



107
108
109
110
111
112
113
# File 'lib/octopress-ink/assets/asset.rb', line 107

def remove_jekyll_asset
  Octopress.site.static_files.clone.each do |sf|
    if sf.kind_of?(Jekyll::StaticFile) && sf.path == path.to_s
      Octopress.site.static_files.delete(sf)
    end
  end
end

#replaced?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/octopress-ink/assets/asset.rb', line 47

def replaced?
  !@replacement.nil?
end