laze 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (65) hide show
  1. data/.document +5 -0
  2. data/.gitignore +22 -0
  3. data/LICENSE +20 -0
  4. data/README.rdoc +150 -0
  5. data/Rakefile +76 -0
  6. data/VERSION.yml +5 -0
  7. data/bin/laze +126 -0
  8. data/examples/website/includes/tagline.html +1 -0
  9. data/examples/website/input/contact/email.md +6 -0
  10. data/examples/website/input/css/screen.css +5 -0
  11. data/examples/website/input/css/test.less +6 -0
  12. data/examples/website/input/img/ruby.gif +0 -0
  13. data/examples/website/input/img/test.jpg +0 -0
  14. data/examples/website/input/img/test.png +0 -0
  15. data/examples/website/input/index.md +13 -0
  16. data/examples/website/input/js/foo.js +1 -0
  17. data/examples/website/input/js/lib.js +5 -0
  18. data/examples/website/layouts/default.html +15 -0
  19. data/examples/website/layouts/subpage.html +5 -0
  20. data/examples/website/laze.yml +1 -0
  21. data/features/create_sites.feature +73 -0
  22. data/features/plugins.feature +49 -0
  23. data/features/site_data.feature +26 -0
  24. data/features/step_definitions/laze_steps.rb +77 -0
  25. data/features/support/env.rb +17 -0
  26. data/lib/laze.rb +64 -0
  27. data/lib/laze/asset.rb +7 -0
  28. data/lib/laze/core_extensions.rb +15 -0
  29. data/lib/laze/item.rb +59 -0
  30. data/lib/laze/javascript.rb +5 -0
  31. data/lib/laze/layout.rb +105 -0
  32. data/lib/laze/page.rb +33 -0
  33. data/lib/laze/plugins.rb +56 -0
  34. data/lib/laze/plugins/cache_buster.rb +49 -0
  35. data/lib/laze/plugins/css_imports.rb +42 -0
  36. data/lib/laze/plugins/cssmin.rb +31 -0
  37. data/lib/laze/plugins/image_check.rb +28 -0
  38. data/lib/laze/plugins/image_optimizer.rb +52 -0
  39. data/lib/laze/plugins/js_requires.rb +63 -0
  40. data/lib/laze/plugins/jsmin.rb +31 -0
  41. data/lib/laze/plugins/less.rb +35 -0
  42. data/lib/laze/plugins/robots.rb +28 -0
  43. data/lib/laze/plugins/sitemap.rb +63 -0
  44. data/lib/laze/renderer.rb +47 -0
  45. data/lib/laze/renderers/javascript_renderer.rb +16 -0
  46. data/lib/laze/renderers/page_renderer.rb +40 -0
  47. data/lib/laze/renderers/stylesheet_renderer.rb +16 -0
  48. data/lib/laze/secretary.rb +74 -0
  49. data/lib/laze/section.rb +39 -0
  50. data/lib/laze/store.rb +51 -0
  51. data/lib/laze/stores/filesystem.rb +127 -0
  52. data/lib/laze/stylesheet.rb +6 -0
  53. data/lib/laze/target.rb +56 -0
  54. data/lib/laze/targets/filesystem.rb +41 -0
  55. data/test/helper.rb +12 -0
  56. data/test/test_assets.rb +28 -0
  57. data/test/test_core_extensions.rb +19 -0
  58. data/test/test_item.rb +59 -0
  59. data/test/test_layout.rb +47 -0
  60. data/test/test_renderer.rb +71 -0
  61. data/test/test_renderers.rb +40 -0
  62. data/test/test_secretary.rb +48 -0
  63. data/test/test_store.rb +18 -0
  64. data/test/test_target.rb +84 -0
  65. metadata +207 -0
@@ -0,0 +1,40 @@
1
+ require "helper"
2
+
3
+ class TestRenderers < Test::Unit::TestCase
4
+ include Laze::Renderers
5
+ context "stylesheets" do
6
+ setup do
7
+ @stylesheet = Stylesheet.new({ :filename => 'test' }, 'foo')
8
+ Secretary.new
9
+ end
10
+
11
+ should "not create without stylesheet" do
12
+ assert_raise(ArgumentError) { StylesheetRenderer.new }
13
+ assert_raise(ArgumentError) { StylesheetRenderer.new(0) }
14
+ assert_raise(ArgumentError) { StylesheetRenderer.new(Page.new({}, '')) }
15
+ assert_nothing_raised(ArgumentError) { StylesheetRenderer.new(@stylesheet) }
16
+ end
17
+
18
+ should "output content directly" do
19
+ assert_equal('foo', StylesheetRenderer.new(@stylesheet).render)
20
+ end
21
+ end
22
+
23
+ context "javascripts" do
24
+ setup do
25
+ @javascript = Javascript.new({ :filename => 'test' }, 'foo')
26
+ Secretary.new
27
+ end
28
+
29
+ should "not create without javascript" do
30
+ assert_raise(ArgumentError) { JavascriptRenderer.new }
31
+ assert_raise(ArgumentError) { JavascriptRenderer.new(0) }
32
+ assert_raise(ArgumentError) { JavascriptRenderer.new(Page.new({}, '')) }
33
+ assert_nothing_raised(ArgumentError) { JavascriptRenderer.new(@javascript) }
34
+ end
35
+
36
+ should "output content directly" do
37
+ assert_equal('foo', JavascriptRenderer.new(@javascript).render)
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,48 @@
1
+ require 'helper'
2
+
3
+ class TestSecretary < Test::Unit::TestCase
4
+ context 'singleton' do
5
+ should 'keep track of the single instance' do
6
+ s = Secretary.new
7
+ assert_equal(Secretary.current, s)
8
+ end
9
+ end
10
+
11
+ context 'creation withouth laze.yml' do
12
+ setup do
13
+ @s = Secretary.new({})
14
+ end
15
+
16
+ should 'use default options' do
17
+ assert_not_nil(@s.options)
18
+ assert_equal(:filesystem, @s.options[:store])
19
+ end
20
+
21
+ should 'keep track of current store and target' do
22
+ assert_kind_of(Store, @s.store)
23
+ assert_kind_of(Target, @s.target)
24
+ end
25
+
26
+ should 'cache current store and target' do
27
+ Store.expects(:find).once.returns(Stores::Filesystem)
28
+ 2.times { assert_instance_of(Stores::Filesystem, @s.store) }
29
+ end
30
+ end
31
+
32
+ context "creation with laze.yml" do
33
+ setup do
34
+ File.expects(:exists?).with('laze.yml').returns(true)
35
+ YAML.expects(:load_file).with('laze.yml').returns({ :store => 'foo', :target => 'foo' })
36
+ @s = Secretary.new({ :target => 'bar' })
37
+ end
38
+
39
+ should "override defaults with yaml settings" do
40
+ assert_equal('foo', @s.options[:store])
41
+ end
42
+
43
+ should "override yaml settings with inline options" do
44
+ assert_equal('bar', @s.options[:target])
45
+ end
46
+ end
47
+
48
+ end
@@ -0,0 +1,18 @@
1
+ require 'helper'
2
+
3
+ class TestStore < Test::Unit::TestCase
4
+ should 'return raise when no suitable child is found' do
5
+ assert_raise(Store::StoreException) { Store.find(:foo) }
6
+ end
7
+
8
+ should 'raise when trying to create' do
9
+ store = Store.new
10
+ %w{each read_template_file find_layout}.each do |method|
11
+ assert_raise(RuntimeError) { store.send(method.to_sym) }
12
+ end
13
+ end
14
+
15
+ should 'return suitable strategy' do
16
+ assert_kind_of(Store, Store.find(:filesystem).new)
17
+ end
18
+ end
@@ -0,0 +1,84 @@
1
+ require 'helper'
2
+
3
+ class TestTarget < Test::Unit::TestCase
4
+ context "all targets" do
5
+ setup do
6
+ FileUtils.stubs(:mkdir).returns(true)
7
+ Laze::Plugins.stubs(:each)
8
+ end
9
+
10
+ context "generic target" do
11
+ should 'return raise when no suitable child is found' do
12
+ assert_raise(Target::TargetException) { Target.find(:foo) }
13
+ end
14
+
15
+ should 'raise when trying to create or save' do
16
+ assert_raise(RuntimeError) { Target.new('output').create('foo') }
17
+ assert_raise(RuntimeError) { Target.new('output').save }
18
+ end
19
+
20
+ should 'return suitable strategy' do
21
+ assert_kind_of(Target, Target.find(:filesystem).new('...'))
22
+ end
23
+ end
24
+
25
+ context "filesystem target" do
26
+ setup do
27
+ @t = Target.find(:filesystem)
28
+ end
29
+
30
+ should "create without errors" do
31
+ @t.new('output')
32
+ end
33
+
34
+ context "creating an item" do
35
+ setup do
36
+ @t = Target.find(:filesystem).new('output')
37
+ @p = Item.new({:path => 'xyz', :filename => 'foo'}, 'bar')
38
+ end
39
+
40
+ should "render the item" do
41
+ f = mock()
42
+ f.expects(:write).with('bar')
43
+ File.expects(:open).with('output/xyz/foo', 'w').yields(f)
44
+ @t.create(@p)
45
+ end
46
+ end
47
+
48
+ context "creating a page" do
49
+ setup do
50
+ @t = Target.find(:filesystem).new('output')
51
+ @p = Page.new({:filename => 'foo'}, 'bar')
52
+ end
53
+
54
+ should "render the page" do
55
+ Renderer.expects(:render).with(@p).returns('bar')
56
+ f = mock()
57
+ f.expects(:write).with('bar')
58
+ File.expects(:open).with('output/foo', 'w').yields(f)
59
+ @t.create(@p)
60
+ end
61
+ end
62
+
63
+ context "creating a section" do
64
+ setup do
65
+ @t = Target.find(:filesystem).new('output')
66
+ FileUtils.expects(:mkdir).with('output/foo').returns(true)
67
+ end
68
+
69
+ should "description" do
70
+ @t.create(Section.new({ :filename => 'foo' }))
71
+ end
72
+
73
+ should "create subitems for section" do
74
+ a = Page.new({:filename => 'foo'}, 'bar')
75
+ b = Section.new({:filename => 'foo'})
76
+ b << a
77
+ assert_equal(1, b.number_of_subitems)
78
+ @t.expects(:create_page).with(a)
79
+ @t.create(b)
80
+ end
81
+ end
82
+ end
83
+ end
84
+ end
metadata ADDED
@@ -0,0 +1,207 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: laze
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
5
+ platform: ruby
6
+ authors:
7
+ - Arjan van der Gaag
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2010-01-27 00:00:00 +01:00
13
+ default_executable: laze
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: thoughtbot-shoulda
17
+ type: :development
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ - !ruby/object:Gem::Dependency
26
+ name: liquid
27
+ type: :runtime
28
+ version_requirement:
29
+ version_requirements: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: "0"
34
+ version:
35
+ - !ruby/object:Gem::Dependency
36
+ name: rdiscount
37
+ type: :runtime
38
+ version_requirement:
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: "0"
44
+ version:
45
+ - !ruby/object:Gem::Dependency
46
+ name: RedCloth
47
+ type: :runtime
48
+ version_requirement:
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: "0"
54
+ version:
55
+ - !ruby/object:Gem::Dependency
56
+ name: jsmin
57
+ type: :runtime
58
+ version_requirement:
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - ">="
62
+ - !ruby/object:Gem::Version
63
+ version: "0"
64
+ version:
65
+ - !ruby/object:Gem::Dependency
66
+ name: cssmin
67
+ type: :runtime
68
+ version_requirement:
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "0"
74
+ version:
75
+ - !ruby/object:Gem::Dependency
76
+ name: directory_watcher
77
+ type: :runtime
78
+ version_requirement:
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: "0"
84
+ version:
85
+ - !ruby/object:Gem::Dependency
86
+ name: less
87
+ type: :runtime
88
+ version_requirement:
89
+ version_requirements: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - ">="
92
+ - !ruby/object:Gem::Version
93
+ version: "0"
94
+ version:
95
+ description: " Laze is a simple static website generator, inspired by the likes of\n jekyll, bonsai, nanoc, webby and many others. It's main purpose is to\n convert a bunch of text files into a working website.\n"
96
+ email: info@agwebdesign.nl
97
+ executables:
98
+ - laze
99
+ extensions: []
100
+
101
+ extra_rdoc_files:
102
+ - LICENSE
103
+ - README.rdoc
104
+ files:
105
+ - .document
106
+ - .gitignore
107
+ - LICENSE
108
+ - README.rdoc
109
+ - Rakefile
110
+ - VERSION.yml
111
+ - bin/laze
112
+ - examples/website/includes/tagline.html
113
+ - examples/website/input/contact/email.md
114
+ - examples/website/input/css/screen.css
115
+ - examples/website/input/css/test.less
116
+ - examples/website/input/img/ruby.gif
117
+ - examples/website/input/img/test.jpg
118
+ - examples/website/input/img/test.png
119
+ - examples/website/input/index.md
120
+ - examples/website/input/js/foo.js
121
+ - examples/website/input/js/lib.js
122
+ - examples/website/layouts/default.html
123
+ - examples/website/layouts/subpage.html
124
+ - examples/website/laze.yml
125
+ - features/create_sites.feature
126
+ - features/plugins.feature
127
+ - features/site_data.feature
128
+ - features/step_definitions/laze_steps.rb
129
+ - features/support/env.rb
130
+ - lib/laze.rb
131
+ - lib/laze/asset.rb
132
+ - lib/laze/core_extensions.rb
133
+ - lib/laze/item.rb
134
+ - lib/laze/javascript.rb
135
+ - lib/laze/layout.rb
136
+ - lib/laze/page.rb
137
+ - lib/laze/plugins.rb
138
+ - lib/laze/plugins/cache_buster.rb
139
+ - lib/laze/plugins/css_imports.rb
140
+ - lib/laze/plugins/cssmin.rb
141
+ - lib/laze/plugins/image_check.rb
142
+ - lib/laze/plugins/image_optimizer.rb
143
+ - lib/laze/plugins/js_requires.rb
144
+ - lib/laze/plugins/jsmin.rb
145
+ - lib/laze/plugins/less.rb
146
+ - lib/laze/plugins/robots.rb
147
+ - lib/laze/plugins/sitemap.rb
148
+ - lib/laze/renderer.rb
149
+ - lib/laze/renderers/javascript_renderer.rb
150
+ - lib/laze/renderers/page_renderer.rb
151
+ - lib/laze/renderers/stylesheet_renderer.rb
152
+ - lib/laze/secretary.rb
153
+ - lib/laze/section.rb
154
+ - lib/laze/store.rb
155
+ - lib/laze/stores/filesystem.rb
156
+ - lib/laze/stylesheet.rb
157
+ - lib/laze/target.rb
158
+ - lib/laze/targets/filesystem.rb
159
+ - test/helper.rb
160
+ - test/test_assets.rb
161
+ - test/test_core_extensions.rb
162
+ - test/test_item.rb
163
+ - test/test_layout.rb
164
+ - test/test_renderer.rb
165
+ - test/test_renderers.rb
166
+ - test/test_secretary.rb
167
+ - test/test_store.rb
168
+ - test/test_target.rb
169
+ has_rdoc: true
170
+ homepage: http://github.com/avdgaag/laze
171
+ licenses: []
172
+
173
+ post_install_message:
174
+ rdoc_options:
175
+ - --charset=UTF-8
176
+ require_paths:
177
+ - lib
178
+ required_ruby_version: !ruby/object:Gem::Requirement
179
+ requirements:
180
+ - - ">="
181
+ - !ruby/object:Gem::Version
182
+ version: "0"
183
+ version:
184
+ required_rubygems_version: !ruby/object:Gem::Requirement
185
+ requirements:
186
+ - - ">="
187
+ - !ruby/object:Gem::Version
188
+ version: "0"
189
+ version:
190
+ requirements: []
191
+
192
+ rubyforge_project:
193
+ rubygems_version: 1.3.5
194
+ signing_key:
195
+ specification_version: 3
196
+ summary: A simple static site manager
197
+ test_files:
198
+ - test/helper.rb
199
+ - test/test_assets.rb
200
+ - test/test_core_extensions.rb
201
+ - test/test_item.rb
202
+ - test/test_layout.rb
203
+ - test/test_renderer.rb
204
+ - test/test_renderers.rb
205
+ - test/test_secretary.rb
206
+ - test/test_store.rb
207
+ - test/test_target.rb