templette 0.4.1 → 0.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.
@@ -1,25 +1,26 @@
1
- #!/usr/bin/env ruby
2
- #
3
-
4
- usage = <<USAGE
5
- Generate the templette framework.
6
- Usage: templette <directory>
7
- --help gets you this help message... Helpful!
8
- USAGE
9
-
10
- require 'fileutils'
11
-
12
- new_dir = ARGV.first
13
-
14
- if new_dir.nil? || new_dir.empty?
15
- puts usage
16
- exit(0)
17
- end
18
-
19
- FileUtils.mkdir(new_dir) unless File.exists?(new_dir)
20
- %w{/pages /templates /helpers /resources}.each do |dir|
21
- FileUtils.mkdir(new_dir + dir) unless File.exists?(new_dir + dir)
22
- end
23
-
24
- FileUtils.cp(File.dirname(__FILE__) + '/../files/Rakefile', new_dir + '/Rakefile')
25
- FileUtils.cp(File.dirname(__FILE__) + '/../files/default_helper.rb', new_dir + '/helpers/default_helper.rb')
1
+ #!/usr/bin/env ruby
2
+ #
3
+
4
+ usage = <<USAGE
5
+ Generate the templette framework.
6
+ Usage: templette <directory>
7
+ --help gets you this help message... Helpful!
8
+ USAGE
9
+
10
+ require 'fileutils'
11
+
12
+ new_dir = ARGV.first
13
+
14
+ if new_dir.nil? || new_dir.empty?
15
+ puts usage
16
+ exit(0)
17
+ end
18
+
19
+ FileUtils.mkdir(new_dir) unless File.exists?(new_dir)
20
+ %w{/pages /templates /helpers /resources}.each do |dir|
21
+ FileUtils.mkdir(new_dir + dir) unless File.exists?(new_dir + dir)
22
+ end
23
+
24
+ FileUtils.cp(File.dirname(__FILE__) + '/../files/Rakefile', new_dir + '/Rakefile')
25
+ FileUtils.cp(File.dirname(__FILE__) + '/../files/default_helper.rb', new_dir + '/helpers/default_helper.rb')
26
+ FileUtils.cp(File.dirname(__FILE__) + '/../files/config.rb', new_dir + '/config.rb')
@@ -0,0 +1,2 @@
1
+ # A site root can be set like this
2
+ # Templette::config[:site_root] = '/new_root/'
@@ -1,4 +1,3 @@
1
- require File.dirname(__FILE__) + '/templette'
2
1
  module FileGenerator
3
2
 
4
3
  class << self
@@ -30,6 +29,17 @@ module FileGenerator
30
29
  end"
31
30
  end
32
31
  end
32
+
33
+ # Called by rake generate:config
34
+ #
35
+ # Generates a default config.rb file, with usage examples present and commented out.
36
+ def config
37
+ if File.exists?("config.rb")
38
+ puts 'Config file already exists!'
39
+ else
40
+ FileUtils.cp(File.dirname(__FILE__) + '/../files/config.rb', 'config.rb')
41
+ end
42
+ end
33
43
  end
34
44
 
35
45
  end
@@ -1,5 +1,9 @@
1
+ task :load_config do
2
+ Templette::load_config_from_file
3
+ end
4
+
1
5
  desc "Build an HTML project from template files"
2
- task(:build) do
6
+ task(:build => :load_config) do
3
7
  if ENV['destination']
4
8
  Templette::Generator.new(ENV['destination']).run
5
9
  else
@@ -8,7 +12,7 @@ task(:build) do
8
12
  end
9
13
 
10
14
  desc "Build and view the site locally using WEBrick"
11
- task(:preview) do
15
+ task(:preview => :load_config) do
12
16
  gen = Templette::Generator.new('preview')
13
17
  gen.run
14
18
 
@@ -68,6 +72,12 @@ namespace :generate do
68
72
  require 'file_generator'
69
73
  FileGenerator.helper(ENV['name'])
70
74
  end
75
+
76
+ desc "Generate a config file"
77
+ task :config do
78
+ require 'file_generator'
79
+ FileGenerator.config
80
+ end
71
81
 
72
82
  end
73
83
 
@@ -1,5 +1,20 @@
1
1
  %w{erb yaml fileutils}.each {|lib| require lib}
2
2
 
3
- %w{data_accessors errors generator method_collector page template engineer}.each do |file|
3
+ %w{helpers data_accessors errors generator method_collector page template engineer}.each do |file|
4
4
  require File.dirname(__FILE__) + "/templette/#{file}"
5
+ end
6
+
7
+ module Templette
8
+ CONFIG_FILE_PATH = 'config.rb'
9
+
10
+ @@config = {:site_root => '/' }
11
+
12
+ def self.config
13
+ @@config
14
+ end
15
+
16
+ def self.load_config_from_file
17
+ eval File.read(CONFIG_FILE_PATH) if File.exists?(CONFIG_FILE_PATH)
18
+ end
19
+
5
20
  end
@@ -1,5 +1,7 @@
1
1
  module Templette
2
2
  module DataAccessors
3
+ include Templette::Helpers
4
+
3
5
  def attributes # :nodoc:
4
6
  @attributes ||= {}
5
7
  end
@@ -22,47 +24,9 @@ module Templette
22
24
  rescue RenderError => e
23
25
  raise PageError.new(page, e.message)
24
26
  end
25
-
26
- # Generates an image tag. Default options {:alt => filename }
27
- #
28
- # Ex.
29
- # image_tag('ball.png', :alt => 'a red ball')
30
- # => "<img src='/images/ball.png' alt='a red ball' />"
31
-
32
- def image_tag(path, options = {})
33
- options = {:alt => path}.merge(options)
34
- "<img src='/images/#{path}' #{params_to_attributes(options)}/>"
35
- end
36
-
37
- # Generates a link to a stylesheet. Default options {:type => 'text/css'}
38
- #
39
- # Ex.
40
- # stylesheet_tag('print', :media => 'print')
41
- # => "<link href='/stylesheets/print.css' media='print' type='text/css' />"
42
-
43
- def stylesheet_tag(path, options = {})
44
- options = {:type => 'text/css'}.merge(options)
45
- "<link href='/stylesheets/#{path}.css' #{params_to_attributes(options)}/>"
46
- end
47
-
48
- # Genrates a javascript scrip tag.
49
- #
50
- # Ex.
51
- # script_tag('slider')
52
- # => <script src='/javascripts/slider.js' type='text/javascript'></script>
53
-
54
- def script_tag(path)
55
- "<script src='/javascripts/#{path}.js' type='text/javascript'></script>"
56
- end
57
27
 
58
28
  private
59
29
 
60
- def params_to_attributes(options)
61
- options.inject('') do |str, h|
62
- str << "#{h[0]}='#{h[1]}' "
63
- end
64
- end
65
-
66
30
  def generate_accessor(k, v)
67
31
  raise TempletteError.new(page, "Method already defined: #{k}. Change your config file and stop using it!") if self.methods.include?(k.to_s)
68
32
  if v.kind_of?(Hash)
@@ -7,21 +7,21 @@ module Templette
7
7
  end
8
8
 
9
9
  def run
10
- FileUtils.mkdir(@out_dir) unless File.exists?(@out_dir)
10
+ FileUtils.mkdir_p(output_location) unless File.exists?(output_location)
11
11
  pages = Page.find_all
12
- puts "Generating site in: #{@out_dir}; contains #{pages.size} pages"
12
+ puts "Generating site in: #{output_location}; contains #{pages.size} pages"
13
13
  pages.each do |page|
14
14
  puts "Generating page #{page.name} using template #{page.template.name}"
15
15
  begin
16
- page.generate(@out_dir)
16
+ page.generate(output_location)
17
17
  rescue Templette::TempletteError => e
18
18
  @errors.push(e)
19
19
  end
20
20
  end
21
21
 
22
22
  if File.exists?(@resources_dir)
23
- puts "Copying resources from #{@resources_dir} to #{@out_dir}"
24
- FileUtils.cp_r("#{@resources_dir}/.", @out_dir)
23
+ puts "Copying resources from #{@resources_dir} to #{output_location}"
24
+ FileUtils.cp_r("#{@resources_dir}/.", output_location)
25
25
  end
26
26
 
27
27
  if @errors.empty?
@@ -32,6 +32,10 @@ module Templette
32
32
  end
33
33
  end
34
34
 
35
+ def output_location
36
+ @out_dir + Templette::config[:site_root]
37
+ end
38
+
35
39
  def clean
36
40
  FileUtils.rm_rf(@out_dir) if File.exists?(@out_dir)
37
41
  end
@@ -0,0 +1,61 @@
1
+ module Templette
2
+
3
+ # Standard tag helpers to attempt to make life a little easier.
4
+ # Tag methods will not modify full paths (with an http protocol).
5
+ # If a tag is just a local path, it will heed the configurable site_root,
6
+ # and prepend the necessary directories to build the anticipated path.
7
+
8
+ module Helpers
9
+
10
+ # Generates an image tag. Default options {:alt => filename }
11
+ #
12
+ # Ex.
13
+ # image_tag('ball.png', :alt => 'a red ball')
14
+ # => "<img src='/images/ball.png' alt='a red ball' />"
15
+
16
+ # image_tag('http://flickr.com/hilarious-picture.jpg', :alt => 'lol!')
17
+ # => "<img src='http://flickr.com/hilarious-picture.jpg' alt='lol!' />"
18
+
19
+ def image_tag(path, options = {})
20
+ options = {:alt => path}.merge(options)
21
+ "<img src='#{tag_path(path, 'images')}' #{params_to_attributes(options)}/>"
22
+ end
23
+
24
+ # Generates a link to a stylesheet. Default options {:type => 'text/css'}
25
+ #
26
+ # Ex.
27
+ # stylesheet_tag('print', :media => 'print')
28
+ # => "<link href='/stylesheets/print.css' media='print' type='text/css' />"
29
+
30
+ def stylesheet_tag(path, options = {})
31
+ options = {:type => 'text/css'}.merge(options)
32
+ "<link href='#{tag_path(path, 'stylesheets', 'css')}' #{params_to_attributes(options)}/>"
33
+ end
34
+
35
+ # Genrates a javascript scrip tag.
36
+ #
37
+ # Ex.
38
+ # script_tag('slider')
39
+ # => <script src='/javascripts/slider.js' type='text/javascript'></script>
40
+
41
+ def script_tag(path)
42
+ "<script src='#{tag_path(path, 'javascripts', 'js')}' type='text/javascript'></script>"
43
+ end
44
+
45
+ private
46
+
47
+ def tag_path(path, asset_subdir, file_ext = nil)
48
+ if path =~ /http:\/\//
49
+ path
50
+ else
51
+ "#{Templette.config[:site_root]}#{asset_subdir}/#{path}#{ "."+file_ext if file_ext }"
52
+ end
53
+ end
54
+
55
+ def params_to_attributes(options)
56
+ options.inject('') do |str, h|
57
+ str << "#{h[0]}='#{h[1]}' "
58
+ end
59
+ end
60
+ end
61
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: templette
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jacob Dunphy and Steve Holder
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-02-14 00:00:00 -08:00
12
+ date: 2009-02-23 00:00:00 -08:00
13
13
  default_executable: templette
14
14
  dependencies: []
15
15
 
@@ -30,6 +30,7 @@ files:
30
30
  - lib/templette/engines/haml.rb
31
31
  - lib/templette/errors.rb
32
32
  - lib/templette/generator.rb
33
+ - lib/templette/helpers.rb
33
34
  - lib/templette/method_collector.rb
34
35
  - lib/templette/page.rb
35
36
  - lib/templette/template.rb
@@ -37,6 +38,7 @@ files:
37
38
  - bin/templette
38
39
  - bin/templette.cmd
39
40
  - files/Capfile
41
+ - files/config.rb
40
42
  - files/default_helper.rb
41
43
  - files/deploy.rb
42
44
  - files/Rakefile