laze 0.2.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.
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