Class: Jekyll::Stylesheet

Inherits:
Object
  • Object
show all
Includes:
Convertible
Defined in:
lib/jekyll/stylesheet.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Convertible

#content_type, #do_layout, #read_yaml, #to_s, #transform

Constructor Details

#initialize(site, base, dir, name) ⇒ Stylesheet

Initialize a new Page.

+site+ is the Site
+base+ is the String path to the <source>
+dir+ is the String path between <source> and the file
+name+ is the String filename of the file

Returns <Page>



17
18
19
20
21
22
23
24
25
# File 'lib/jekyll/stylesheet.rb', line 17

def initialize(site, base, dir, name)
  @site = site
  @base = base
  @dir  = dir
  @name = name

  self.process(name)
  self.content = File.read(File.join(File.join(base, dir), name))
end

Instance Attribute Details

#basenameObject

Returns the value of attribute basename.



7
8
9
# File 'lib/jekyll/stylesheet.rb', line 7

def basename
  @basename
end

#contentObject

Returns the value of attribute content.



8
9
10
# File 'lib/jekyll/stylesheet.rb', line 8

def content
  @content
end

#dataObject

Returns the value of attribute data.



8
9
10
# File 'lib/jekyll/stylesheet.rb', line 8

def data
  @data
end

#extObject

Returns the value of attribute ext.



7
8
9
# File 'lib/jekyll/stylesheet.rb', line 7

def ext
  @ext
end

#nameObject

Returns the value of attribute name.



7
8
9
# File 'lib/jekyll/stylesheet.rb', line 7

def name
  @name
end

#outputObject

Returns the value of attribute output.



8
9
10
# File 'lib/jekyll/stylesheet.rb', line 8

def output
  @output
end

#siteObject

Returns the value of attribute site.



6
7
8
# File 'lib/jekyll/stylesheet.rb', line 6

def site
  @site
end

Instance Method Details

#dirObject

The generated directory into which the page will be placed upon generation. This is derived from the permalink or, if permalink is absent, set to ‘/’

Returns <String>



32
33
34
# File 'lib/jekyll/stylesheet.rb', line 32

def dir
  url[-1, 1] == '/' ? url : File.dirname(url)
end

#process(name) ⇒ Object

Extract information from the page filename

+name+ is the String filename of the page file

Returns nothing



48
49
50
51
# File 'lib/jekyll/stylesheet.rb', line 48

def process(name)
  self.ext = File.extname(name)
  self.basename = name.split('.')[0..-2].first
end

#renderObject

Add any necessary layouts to this post

+layouts+ is a Hash of {"name" => "layout"}
+site_payload+ is the site payload hash

Returns nothing



58
59
60
61
62
63
# File 'lib/jekyll/stylesheet.rb', line 58

def render()
  self.transform

  # output keeps track of what will finally be written
  self.output = self.content
end

#urlObject

The generated relative url of this stylesheet e.g. /css/site.css

Returns <String>



40
41
42
# File 'lib/jekyll/stylesheet.rb', line 40

def url
  @url ||= "/css/#{basename}.css"
end

#write(dest_prefix, dest_suffix = nil) ⇒ Object

Write the generated page file to the destination directory.

+dest_prefix+ is the String path to the destination dir
+dest_suffix+ is a suffix path to the destination dir

Returns nothing



70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# File 'lib/jekyll/stylesheet.rb', line 70

def write(dest_prefix, dest_suffix = nil)
  dest = dest_suffix ? File.join(dest_prefix, dest_suffix) : dest_prefix
  FileUtils.mkdir_p(dest)

  # The url needs to be unescaped in order to preserve the correct filename
  path = File.join(dest, CGI.unescape(self.url))
  dirname = File.dirname(path)
  unless File.exists?(dirname)
    FileUtils.mkdir_p(dirname)
  end

  File.open(path, 'w') do |f|
    f.write(self.output)
  end
end