nanoc 1.0.1 → 1.1

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.
data/Rakefile CHANGED
@@ -10,14 +10,14 @@ require File.dirname(__FILE__) + '/lib/nanoc.rb'
10
10
 
11
11
  NAME = 'nanoc'
12
12
  VERS = Nanoc::VERSION
13
- SUMMARY = 'a CMS that doesn\'t even run on your server'
13
+ SUMMARY = 'a CMS that doesn\'t run on your server'
14
14
 
15
15
  HOMEPAGE = 'http://stoneship.org/software/nanoc'
16
16
  EMAIL = 'denis.defreyne@stoneship.org'
17
17
 
18
18
  #####
19
19
 
20
- CLEAN.include [ '*.gem', 'pkg', 'tmp' ]
20
+ CLEAN.include [ '*.gem', 'pkg', 'tmp', 'test/fixtures/*/output/*' ]
21
21
 
22
22
  spec = Gem::Specification.new do |s|
23
23
  s.name = NAME
@@ -32,7 +32,7 @@ spec = Gem::Specification.new do |s|
32
32
  s.required_ruby_version = '>= 1.8.2'
33
33
 
34
34
  s.has_rdoc = false
35
- s.files = %w( README LICENSE Rakefile ) + Dir.glob('{bin,lib,test}/**/*')
35
+ s.files = %w( README LICENSE Rakefile ) + Dir.glob('{bin,lib}/**/*')
36
36
  s.executables = [ 'nanoc' ]
37
37
  s.require_path = 'lib'
38
38
  s.bindir = 'bin'
data/lib/compiler.rb CHANGED
@@ -1,96 +1,54 @@
1
1
  module Nanoc
2
-
3
2
  class Compiler
4
3
 
5
- DEFAULT_CONFIG = {
6
- :output_dir => 'output'
7
- }
8
-
9
- DEFAULT_PAGE = {
10
- :layout => '<%= @content %>',
11
- :filters => [],
12
- :order => 0,
13
- :extension => 'html'
14
- }
4
+ DEFAULT_CONFIG = { :output_dir => 'output' }
5
+ DEFAULT_PAGE = { :filters => [], :extension => 'html', :order => 0, :layout => "default" }
15
6
 
16
7
  def initialize
17
8
  Nanoc.ensure_in_site
18
-
19
- @config = DEFAULT_CONFIG.merge(File.read_clean_yaml('config.yaml'))
20
- @global_page = DEFAULT_PAGE.merge(File.read_clean_yaml('meta.yaml'))
21
- @default_layout = File.read_file('layouts/' + @global_page[:layout] + '.erb')
9
+
10
+ @config = DEFAULT_CONFIG.merge(YAML.load_file_and_clean('config.yaml'))
11
+ @global_page = DEFAULT_PAGE.merge(YAML.load_file_and_clean('meta.yaml'))
22
12
  end
23
13
 
24
14
  def run
25
- Nanoc.ensure_in_site
26
-
27
- # Require files in lib/
28
15
  Dir.glob('lib/*.rb').each { |f| require f }
29
16
 
30
- # Compile pages
31
- pages = uncompiled_pages.sort { |x,y| x[:order].to_i <=> y[:order].to_i }
32
- pages = compile_pages(pages)
33
-
34
- # Put pages in their layout
17
+ pages = compile_pages(uncompiled_pages)
35
18
  pages.each do |page|
36
- content_with_layout = layout_for_page(page).eruby(page.merge({ :pages => pages }))
37
- FileManager.create_file(path_for_page(page)) { content_with_layout }
19
+ content = (page[:layout].nil? ? '<%= @page[:content] %>' : File.read("layouts/#{page[:layout]}.erb")).eruby(page.merge({ :page => page, :pages => pages }))
20
+ FileManager.create_file(path_for_page(page)) { content }
38
21
  end
39
22
  end
40
23
 
41
24
  private
42
25
 
43
26
  def uncompiled_pages
44
- # Get all meta file names
45
- meta_filenames = Dir.glob('content/**/meta.yaml')
46
-
47
- # Read all meta files
48
- pages = meta_filenames.collect do |filename|
49
- # Get meta file
50
- page = @global_page.merge(File.read_clean_yaml(filename)).merge({:path => filename.sub(/^content/, '').sub('meta.yaml', '')})
27
+ Dir.glob('content/**/meta.yaml').collect do |filename|
28
+ page = @global_page.merge(YAML.load_file_and_clean(filename))
29
+ page[:path] = filename.sub(/^content/, '').sub('meta.yaml', '')
51
30
 
52
- # Get index filename
53
- index_filenames = Dir.glob(File.dirname(filename) + '/index.*')
54
- index_filenames.ensure_single('index files', File.dirname(filename))
55
- page[:_index_filename] = index_filenames[0]
31
+ content_filenames = Dir.glob(filename.sub('meta.yaml', File.basename(File.dirname(filename)) + '.*'))
32
+ content_filenames += Dir.glob("#{File.dirname(filename)}/index.*") # fallback for nanoc 1.0
33
+ content_filenames.ensure_single('content files', File.dirname(filename))
34
+ page[:_content_filename] = content_filenames[0]
56
35
 
57
36
  page
37
+ end.compact.reject { |page| page[:is_draft] }.sort do |x,y|
38
+ x[:order].to_i == y[:order].to_i ? x[:path] <=> y[:path] : x[:order].to_i <=> y[:order].to_i
58
39
  end
59
40
  end
60
41
 
61
42
  def path_for_page(a_page)
62
- if a_page[:custom_path].nil?
63
- @config[:output_dir] + a_page[:path] + 'index.' + a_page[:extension]
64
- else
65
- @config[:output_dir] + a_page[:custom_path]
66
- end
67
- end
68
-
69
- def layout_for_page(a_page)
70
- if a_page[:layout] == 'none'
71
- '<%= @content %>'
72
- elsif @global_page[:layout] != a_page[:layout]
73
- File.read_file('layouts/' + a_page[:layout] + '.erb')
74
- else
75
- @default_layout
76
- end
43
+ @config[:output_dir] + ( a_page[:custom_path].nil? ? a_page[:path] + 'index.' + a_page[:extension] : a_page[:custom_path] )
77
44
  end
78
45
 
79
46
  def compile_pages(a_pages)
80
- pages = []
81
-
82
- a_pages.each do |page|
83
- # Read and filter page
84
- content = File.read_file(page[:_index_filename])
85
- content.filter!(page[:filters], :eruby_context => { :pages => pages }) unless page[:filters].nil?
86
-
87
- # Store page
88
- pages << page.merge( { :content => content })
47
+ a_pages.inject([]) do |pages, page|
48
+ content = File.read(page[:_content_filename]).filter(page[:filters], :eruby_context => { :page => page, :pages => pages })
49
+ pages + [ page.merge( { :content => content }) ]
89
50
  end
90
-
91
- pages
92
51
  end
93
52
 
94
53
  end
95
-
96
54
  end
data/lib/creator.rb CHANGED
@@ -7,7 +7,7 @@ module Nanoc
7
7
  FileManager.create_dir 'output'
8
8
 
9
9
  FileManager.create_file 'config.yaml' do
10
- "output_dir: output\n"
10
+ "output_dir: \"output\"\n"
11
11
  end
12
12
 
13
13
  FileManager.create_file 'meta.yaml' do
@@ -15,9 +15,10 @@ module Nanoc
15
15
  "# Other metafiles can override the contents of this one.\n" +
16
16
  "\n" +
17
17
  "# Built-in\n" +
18
- "layout: default\n" +
19
- "order: 0\n" +
20
- "filters: []\n" +
18
+ "layout: \"default\"\n" +
19
+ "order: 0\n" +
20
+ "filters: []\n" +
21
+ "extension: \"html\"\n" +
21
22
  "\n" +
22
23
  "# Custom\n"
23
24
  end
@@ -34,10 +35,10 @@ module Nanoc
34
35
  FileManager.create_file 'default.erb' do
35
36
  "<html>\n" +
36
37
  " <head>\n" +
37
- " <title><%= @title %></title>\n" +
38
+ " <title><%= @page[:title] %></title>\n" +
38
39
  " </head>\n" +
39
40
  " <body>\n" +
40
- "<%= @content %>\n" +
41
+ "<%= @page[:content] %>\n" +
41
42
  " </body>\n" +
42
43
  "</html>\n"
43
44
  end
@@ -65,7 +66,7 @@ module Nanoc
65
66
 
66
67
  FileManager.create_dir 'templates' do
67
68
  FileManager.create_dir 'default' do
68
- FileManager.create_file 'index.txt' do
69
+ FileManager.create_file "default.txt" do
69
70
  "This is a new page. Please edit me!\n"
70
71
  end
71
72
  FileManager.create_file 'meta.yaml' do
@@ -78,7 +79,7 @@ module Nanoc
78
79
  end
79
80
 
80
81
  FileManager.create_dir 'content' do
81
- FileManager.create_file 'index.txt' do
82
+ FileManager.create_file 'content.txt' do
82
83
  "This is a sample root page. Please edit me!\n"
83
84
  end
84
85
  FileManager.create_file 'meta.yaml' do
@@ -93,23 +94,26 @@ module Nanoc
93
94
 
94
95
  def self.create_page(a_pagename, a_params={})
95
96
  Nanoc.ensure_in_site
96
-
97
+
97
98
  # Sanitize page name
98
99
  if a_pagename =~ /^[\/\.]+/
99
- $stderr.puts 'ERROR: page name starts with dots and/or slashes, aborting'
100
+ $stderr.puts 'ERROR: page name starts with dots and/or slashes, aborting' unless $quiet == true
100
101
  return
101
102
  end
102
103
 
103
104
  # Read template
104
105
  template_index = nil
105
106
  template_meta = nil
107
+ template_content_filename = nil
106
108
  template = a_params[:template] || 'default'
107
109
  begin
108
- template_meta = File.read_file('templates/' + template + '/meta.yaml')
109
- template_index_filename = Dir.glob('templates/' + template + '/index.*')[0]
110
- template_index = File.read_file(template_index_filename)
110
+ template_meta = File.read("templates/#{template}/meta.yaml")
111
+ template_content_filenames = Dir.glob("templates/#{template}/#{template}.*")
112
+ template_content_filenames += Dir.glob("templates/#{template}/index.*")
113
+ template_content_filename = template_content_filenames[0]
114
+ template_index = File.read(template_content_filename)
111
115
  rescue
112
- $stderr.puts 'ERROR: no such template'
116
+ $stderr.puts 'ERROR: no such template' unless $quiet == true
113
117
  exit
114
118
  end
115
119
  template_meta = template_meta.eruby
@@ -118,7 +122,7 @@ module Nanoc
118
122
  # Create index and yaml file
119
123
  FileManager.create_dir 'content' do
120
124
  FileManager.create_dir a_pagename do
121
- FileManager.create_file 'index.txt' do
125
+ FileManager.create_file "#{a_pagename}#{File.extname(template_content_filename)}" do
122
126
  template_index
123
127
  end
124
128
  FileManager.create_file 'meta.yaml' do
@@ -130,10 +134,10 @@ module Nanoc
130
134
 
131
135
  def self.create_template(a_templatename)
132
136
  Nanoc.ensure_in_site
133
-
137
+
134
138
  FileManager.create_dir 'templates' do
135
139
  FileManager.create_dir a_templatename do
136
- FileManager.create_file 'index.txt' do
140
+ FileManager.create_file "#{a_templatename}.txt" do
137
141
  "This is a new page. Please edit me!\n"
138
142
  end
139
143
  FileManager.create_file 'meta.yaml' do
data/lib/enhancements.rb CHANGED
@@ -11,26 +11,17 @@ require 'yaml'
11
11
  class Array
12
12
  # Ensures that the array contains only one element
13
13
  def ensure_single(a_noun, a_context)
14
- raise "ERROR: expected 1 #{a_noun}, found #{self.size} (#{a_context})" if self.size != 1
14
+ if self.size != 1
15
+ $stderr.puts "ERROR: expected 1 #{a_noun}, found #{self.size} (#{a_context})" unless $quiet == true
16
+ exit
17
+ end
15
18
  end
16
19
  end
17
20
 
18
- class File
19
- # Reads the contents of the entire file
20
- def self.read_file(a_filename)
21
- content = ''
22
- File.open(a_filename) { |io| content = io.read }
23
- content
24
- end
25
-
26
- # Returns the contents of an entire file interpreted as YAML
27
- def self.read_yaml(a_filename)
28
- YAML::load(self.read_file(a_filename)) || {}
29
- end
30
-
21
+ module YAML
31
22
  # Returns the contents of an entire file interpreted as YAML and cleaned
32
- def self.read_clean_yaml(a_filename)
33
- self.read_yaml(a_filename).clean
23
+ def self.load_file_and_clean(a_filename)
24
+ (YAML.load_file(a_filename) || {}).clean
34
25
  end
35
26
  end
36
27
 
@@ -38,9 +29,7 @@ class Hash
38
29
  # Converts all keys to symbols, and converts *_at and *_on
39
30
  # keys to Times and Dates, respectively
40
31
  def clean
41
- hash = {}
42
-
43
- self.each_pair do |key, value|
32
+ inject({}) do |hash, (key, value)|
44
33
  if key =~ /_on$/
45
34
  hash[key.to_sym] = Date.parse(value)
46
35
  elsif key =~ /_at$/
@@ -49,27 +38,28 @@ class Hash
49
38
  hash[key.to_sym] = true
50
39
  elsif value == 'false'
51
40
  hash[key.to_sym] = false
41
+ elsif value == 'none'
42
+ hash[key.to_sym] = nil
52
43
  else
53
44
  hash[key.to_sym] = value
54
45
  end
46
+ hash
55
47
  end
56
-
57
- hash
58
48
  end
59
49
  end
60
50
 
61
51
  class String
62
52
  # Runs the string through the filters as given by the array of
63
53
  # filter names. Available filters include 'markdown', 'smartypants' and 'eruby'.
64
- def filter!(a_filters, a_params={})
65
- a_filters.each do |filter|
54
+ def filter(a_filters, a_params={})
55
+ a_filters.inject(self) do |result, filter|
66
56
  case filter
67
57
  when 'markdown'
68
- self.replace(self.markdown)
58
+ result.replace(result.markdown)
69
59
  when 'smartypants'
70
- self.replace(self.smartypants)
60
+ result.replace(result.smartypants)
71
61
  when 'eruby'
72
- self.replace(self.eruby(a_params[:eruby_context]))
62
+ result.replace(result.eruby(a_params[:eruby_context]))
73
63
  end
74
64
  end
75
65
  end
@@ -78,7 +68,7 @@ class String
78
68
  def markdown
79
69
  BlueCloth::new(self).to_html
80
70
  rescue NameError
81
- $stderr.puts 'ERROR: String#markdown failed: BlueCloth not installed'
71
+ $stderr.puts 'ERROR: String#markdown failed: BlueCloth not installed' unless $quiet == true
82
72
  exit
83
73
  end
84
74
 
@@ -86,7 +76,7 @@ class String
86
76
  def smartypants
87
77
  RubyPants::new(self).to_html
88
78
  rescue NameError
89
- $stderr.puts 'ERROR: String#smartypants failed: RubyPants not installed'
79
+ $stderr.puts 'ERROR: String#smartypants failed: RubyPants not installed' unless $quiet == true
90
80
  exit
91
81
  end
92
82
 
@@ -99,25 +89,50 @@ end
99
89
  class FileManager
100
90
  @@stack = []
101
91
 
92
+ COLORS = {
93
+ :reset => "\e[0m",
94
+
95
+ :bold => "\e[1m",
96
+
97
+ :black => "\e[30m",
98
+ :red => "\e[31m",
99
+ :green => "\e[32m",
100
+ :yellow => "\e[33m",
101
+ :blue => "\e[34m",
102
+ :magenta => "\e[35m",
103
+ :cyan => "\e[36m",
104
+ :white => "\e[37m"
105
+ }
106
+ ACTION_COLORS = {
107
+ :create => COLORS[:bold] + COLORS[:green],
108
+ :update => COLORS[:bold] + COLORS[:yellow],
109
+ :identical => COLORS[:bold]
110
+ }
111
+
102
112
  def self.create_dir(a_name)
103
113
  @@stack.push(a_name)
104
- unless File.directory?(File.join(@@stack))
105
- puts ' create ' + @@stack.join('/')
106
- FileUtils.mkdir_p(@@stack.join('/'))
114
+ path = File.join(@@stack)
115
+ unless File.directory?(path)
116
+ FileUtils.mkdir_p(path)
117
+ log('create', path)
107
118
  end
108
119
  yield if block_given?
109
120
  @@stack.pop
110
121
  end
111
122
 
112
123
  def self.create_file(a_name)
113
- path = @@stack.empty? ? a_name : @@stack.join('/') + '/' + a_name
124
+ path = @@stack.empty? ? a_name : File.join(@@stack + [ a_name ])
114
125
  FileManager.create_dir(path.sub(/\/[^\/]+$/, '')) if @@stack.empty?
115
- puts " #{File.exist?(a_name) ? 'update' : 'create'} " + path
116
- if block_given?
117
- open(path, 'w') { |io| io.write(yield) }
118
- else
119
- open(path, 'w') { |io| }
120
- end
126
+ content = block_given? ? yield : nil
127
+ File.exist?(path) ? ( block_given? and File.read(path) == content ? log('identical', path) : log('update', path) ) : log('create', path)
128
+ open(path, 'w') { |io| io.write(content) unless content.nil? }
121
129
  end
122
130
 
131
+ def self.log(a_action, a_path)
132
+ puts format('%s%12s%s %s', ACTION_COLORS[a_action.to_sym], a_action, COLORS[:reset], a_path) unless $quiet == true
133
+ end
134
+ end
135
+
136
+ def render(a_name, a_context={})
137
+ File.read('layouts/' + a_name + '.erb').eruby(a_context.merge({ :page => @page, :pages => @pages }))
123
138
  end
data/lib/nanoc.rb CHANGED
@@ -1,15 +1,15 @@
1
1
  module Nanoc
2
- VERSION = '1.0.1'
3
-
2
+ VERSION = '1.1'
3
+
4
4
  def self.ensure_in_site
5
5
  unless in_site?
6
6
  $stderr.puts 'ERROR: The current working directory does not seem to be a valid/complete nanoc site directory; aborting.'
7
7
  exit
8
8
  end
9
9
  end
10
-
10
+
11
11
  private
12
-
12
+
13
13
  def self.in_site?
14
14
  return false unless File.directory?('content')
15
15
  return false unless File.directory?('layouts')
@@ -17,11 +17,11 @@ module Nanoc
17
17
  return false unless File.directory?('output')
18
18
  return false unless File.directory?('tasks')
19
19
  return false unless File.directory?('templates')
20
-
20
+
21
21
  return false unless File.exist?('config.yaml')
22
22
  return false unless File.exist?('meta.yaml')
23
23
  return false unless File.exist?('Rakefile')
24
-
24
+
25
25
  true
26
26
  end
27
27
  end
metadata CHANGED
@@ -3,15 +3,15 @@ rubygems_version: 0.9.2
3
3
  specification_version: 1
4
4
  name: nanoc
5
5
  version: !ruby/object:Gem::Version
6
- version: 1.0.1
7
- date: 2007-05-05 00:00:00 +02:00
8
- summary: a CMS that doesn't even run on your server
6
+ version: "1.1"
7
+ date: 2007-05-08 00:00:00 +02:00
8
+ summary: a CMS that doesn't run on your server
9
9
  require_paths:
10
10
  - lib
11
11
  email: denis.defreyne@stoneship.org
12
12
  homepage: http://stoneship.org/software/nanoc
13
13
  rubyforge_project:
14
- description: a CMS that doesn't even run on your server
14
+ description: a CMS that doesn't run on your server
15
15
  autorequire:
16
16
  default_executable:
17
17
  bindir: bin
@@ -37,9 +37,6 @@ files:
37
37
  - lib/creator.rb
38
38
  - lib/enhancements.rb
39
39
  - lib/nanoc.rb
40
- - test/test_compile.rb
41
- - test/test_create.rb
42
- - test/test_enhancements.rb
43
40
  test_files: []
44
41
 
45
42
  rdoc_options: []
data/test/test_compile.rb DELETED
@@ -1,26 +0,0 @@
1
- require 'test/unit'
2
-
3
- require File.dirname(__FILE__) + '/../lib/nanoc.rb'
4
-
5
- class CompileTest < Test::Unit::TestCase
6
- def setup
7
- FileManager.create_dir 'tmp'
8
- end
9
-
10
- def teardown
11
- FileUtils.rm_rf 'tmp'
12
- end
13
-
14
- def test_compile
15
- FileUtils.cd('tmp')
16
- Nanoc::Creator.create_site('site')
17
- FileUtils.cd('site')
18
- Nanoc::Creator.create_page('moo')
19
- Nanoc::Compiler.new.run
20
- FileUtils.cd('..')
21
- FileUtils.cd('..')
22
-
23
- assert File.file?('tmp/site/output/index.html')
24
- assert File.file?('tmp/site/output/moo/index.html')
25
- end
26
- end
data/test/test_create.rb DELETED
@@ -1,71 +0,0 @@
1
- require 'test/unit'
2
-
3
- require File.dirname(__FILE__) + '/../lib/nanoc.rb'
4
-
5
- class CreateTest < Test::Unit::TestCase
6
- def setup
7
- FileManager.create_dir 'tmp'
8
- end
9
-
10
- def teardown
11
- FileUtils.rm_rf 'tmp'
12
- end
13
-
14
- def test_create_site
15
- FileUtils.cd('tmp')
16
- Nanoc::Creator.create_site('site')
17
- FileUtils.cd('..')
18
-
19
- assert File.directory?('tmp/site/')
20
-
21
- assert File.file?('tmp/site/config.yaml')
22
- assert File.file?('tmp/site/meta.yaml')
23
- assert File.file?('tmp/site/Rakefile')
24
-
25
- assert File.directory?('tmp/site/content/')
26
- assert File.file?('tmp/site/content/index.txt')
27
- assert File.file?('tmp/site/content/meta.yaml')
28
-
29
- assert File.directory?('tmp/site/layouts/')
30
- assert File.file?('tmp/site/layouts/default.erb')
31
-
32
- assert File.directory?('tmp/site/lib/')
33
- assert File.file?('tmp/site/lib/default.rb')
34
-
35
- assert File.directory?('tmp/site/output/')
36
-
37
- assert File.directory?('tmp/site/templates/')
38
- assert File.directory?('tmp/site/templates/default/')
39
- assert File.file?('tmp/site/templates/default/index.txt')
40
- assert File.file?('tmp/site/templates/default/meta.yaml')
41
-
42
- assert File.directory?('tmp/site/tasks/')
43
- assert File.file?('tmp/site/tasks/default.rake')
44
- end
45
-
46
- def test_create_page
47
- FileUtils.cd('tmp')
48
- Nanoc::Creator.create_site('site')
49
- FileUtils.cd('site')
50
- Nanoc::Creator.create_page('moo')
51
- FileUtils.cd('..')
52
- FileUtils.cd('..')
53
-
54
- assert File.directory?('tmp/site/content/moo/')
55
- assert File.file?('tmp/site/content/moo/index.txt')
56
- assert File.file?('tmp/site/content/moo/meta.yaml')
57
- end
58
-
59
- def test_create_template
60
- FileUtils.cd('tmp')
61
- Nanoc::Creator.create_site('site')
62
- FileUtils.cd('site')
63
- Nanoc::Creator.create_template('moo')
64
- FileUtils.cd('..')
65
- FileUtils.cd('..')
66
-
67
- assert File.directory?('tmp/site/templates/moo/')
68
- assert File.file?('tmp/site/templates/moo/index.txt')
69
- assert File.file?('tmp/site/templates/moo/meta.yaml')
70
- end
71
- end
@@ -1,114 +0,0 @@
1
- require 'test/unit'
2
- require 'fileutils'
3
- require 'time'
4
-
5
- require File.dirname(__FILE__) + '/../lib/nanoc.rb'
6
-
7
- class EnhancementsTest < Test::Unit::TestCase
8
- def setup
9
- open('test.yaml', 'w') do |io|
10
- io.write('created_at: 12/07/04')
11
- end
12
- end
13
-
14
- def teardown
15
- FileUtils.rm('test.yaml')
16
- end
17
-
18
- def test_array_ensure_single
19
- assert_raise RuntimeError do
20
- [ ].ensure_single('moofs', 'blargh')
21
- end
22
- assert_raise RuntimeError do
23
- [ 1, 2 ].ensure_single('moofs', 'blargh')
24
- end
25
- assert_nothing_raised do
26
- [ 1 ].ensure_single('moofs', 'blargh')
27
- end
28
- end
29
-
30
- def test_file_read_file
31
- assert_equal 'created_at: 12/07/04', File.read_file('test.yaml')
32
- end
33
-
34
- def test_file_read_yaml
35
- assert_equal({ 'created_at' => '12/07/04' }, File.read_yaml('test.yaml'))
36
- end
37
-
38
- def test_file_read_clean_yaml
39
- assert_equal({ :created_at => Time.parse('12/07/04') }, File.read_clean_yaml('test.yaml'))
40
- end
41
-
42
- def test_hash_clean
43
- hash1 = { 'foo' => 'bar' }
44
- hash1_cleaned = { :foo => 'bar' }
45
-
46
- hash2 = { 'created_at' => '12/07/2004' }
47
- hash2_cleaned = { :created_at => Time.parse('12/07/2004') }
48
-
49
- assert_equal hash1_cleaned, hash1.clean
50
- assert_equal hash2_cleaned, hash2.clean
51
- end
52
-
53
- def test_string_filter!
54
- text = '<%= @foo %>'
55
- context = { :foo => 'Te\'st' }
56
-
57
- text.filter!([ 'eruby' ], :eruby_context => context)
58
- assert_equal 'Te\'st', text
59
-
60
- begin
61
- text.filter!([ 'markdown', 'smartypants' ])
62
- assert_equal '<p>Te&#8217;st</p>', text
63
- rescue NameError
64
- $stderr.puts 'WARNING: Unable to test String#filter! (BlueCloth or RubyPants not installed)'
65
- end
66
- end
67
-
68
- def test_string_markdown
69
- begin
70
- assert_equal 'Hello!'.markdown, '<p>Hello!</p>'
71
- rescue NameError
72
- $stderr.puts 'WARNING: Unable to test String#markdown (BlueCloth not installed)'
73
- end
74
- end
75
-
76
- def test_string_smartypants
77
- begin
78
- assert_equal 'Te\'st'.smartypants, 'Te&#8217;st'
79
- rescue NameError
80
- $stderr.puts 'WARNING: Unable to test String#smartypants (RubyPants not installed)'
81
- end
82
- end
83
-
84
- def test_string_eruby
85
- assert_equal '<%= "moo" %>'.eruby, 'moo'
86
- assert_equal '<%= @foo %>'.eruby(:foo => 'bar'), 'bar'
87
- end
88
-
89
- def test_filemanager_create_dir
90
- FileManager.create_dir 'tmp' do
91
- FileManager.create_dir 'foo'
92
- end
93
-
94
- assert File.exist?('tmp')
95
- assert File.directory?('tmp')
96
-
97
- assert File.exist?('tmp/foo')
98
- assert File.directory?('tmp/foo')
99
-
100
- assert !File.exist?('foo')
101
- end
102
-
103
- def test_filemanager_create_file
104
- FileManager.create_dir 'tmp' do
105
- FileManager.create_file 'bar' do
106
- "asdf"
107
- end
108
- end
109
-
110
- assert File.exist?('tmp/bar')
111
- assert File.file?('tmp/bar')
112
- assert_equal 'asdf', File.read_file('tmp/bar')
113
- end
114
- end