ruhoh 0.3.0 → 1.0.0.alpha

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/Gemfile +1 -0
  2. data/README.md +0 -33
  3. data/dash.html +1 -0
  4. data/history.json +29 -0
  5. data/lib/ruhoh/client/client.rb +30 -22
  6. data/lib/ruhoh/client/help.yml +6 -2
  7. data/lib/ruhoh/compiler.rb +8 -20
  8. data/lib/ruhoh/compilers/rss.rb +36 -0
  9. data/lib/ruhoh/compilers/theme.rb +41 -0
  10. data/lib/ruhoh/config.rb +49 -0
  11. data/lib/ruhoh/converters/converter.rb +17 -4
  12. data/lib/ruhoh/converters/markdown.rb +2 -2
  13. data/lib/ruhoh/db.rb +29 -2
  14. data/lib/ruhoh/deployers/s3.rb +1 -1
  15. data/lib/ruhoh/logger.rb +1 -1
  16. data/lib/ruhoh/page.rb +38 -22
  17. data/lib/ruhoh/parsers/javascripts.rb +67 -0
  18. data/lib/ruhoh/parsers/layouts.rb +6 -10
  19. data/lib/ruhoh/parsers/pages.rb +17 -24
  20. data/lib/ruhoh/parsers/partials.rb +6 -14
  21. data/lib/ruhoh/parsers/payload.rb +47 -0
  22. data/lib/ruhoh/parsers/posts.rb +27 -29
  23. data/lib/ruhoh/parsers/site.rb +2 -2
  24. data/lib/ruhoh/parsers/stylesheets.rb +75 -0
  25. data/lib/ruhoh/parsers/widgets.rb +104 -0
  26. data/lib/ruhoh/paths.rb +75 -0
  27. data/lib/ruhoh/previewer.rb +11 -5
  28. data/lib/ruhoh/program.rb +35 -4
  29. data/lib/ruhoh/templaters/asset_helpers.rb +66 -0
  30. data/lib/ruhoh/templaters/base_helpers.rb +143 -0
  31. data/lib/ruhoh/templaters/helpers.rb +1 -148
  32. data/lib/ruhoh/templaters/rmustache.rb +45 -4
  33. data/lib/ruhoh/urls.rb +46 -0
  34. data/lib/ruhoh/utils.rb +59 -17
  35. data/lib/ruhoh/version.rb +2 -2
  36. data/lib/ruhoh/watch.rb +26 -14
  37. data/lib/ruhoh.rb +38 -96
  38. data/ruhoh.gemspec +29 -10
  39. data/scaffolds/draft.html +9 -0
  40. data/scaffolds/page.html +0 -2
  41. data/scaffolds/post.html +0 -4
  42. data/scaffolds/theme/{images → javascripts}/.gitkeep +0 -0
  43. data/scaffolds/theme/layouts/default.html +2 -4
  44. data/scaffolds/theme/layouts/page.html +1 -1
  45. data/scaffolds/theme/layouts/post.html +1 -1
  46. data/scaffolds/theme/{css/style.css → media/.gitkeep} +0 -0
  47. data/scaffolds/theme/stylesheets/style.css +0 -0
  48. data/scaffolds/theme/theme.yml +27 -0
  49. data/scaffolds/theme/widgets/.gitkeep +0 -0
  50. data/spec/config_spec.rb +50 -0
  51. data/spec/db_spec.rb +28 -14
  52. data/spec/page_spec.rb +24 -35
  53. data/spec/parsers/layouts_spec.rb +5 -13
  54. data/spec/parsers/pages_spec.rb +13 -11
  55. data/spec/parsers/posts_spec.rb +34 -29
  56. data/spec/parsers/routes_spec.rb +2 -1
  57. data/spec/parsers/site_spec.rb +6 -5
  58. data/spec/setup_spec.rb +3 -47
  59. data/widgets/analytics/config.yml +5 -0
  60. data/{system_partials/analytics/getclicky → widgets/analytics/layouts/getclicky.html} +2 -2
  61. data/{system_partials/analytics/google → widgets/analytics/layouts/google.html} +1 -1
  62. data/widgets/comments/config.yml +12 -0
  63. data/{system_partials/comments/disqus → widgets/comments/layouts/disqus.html} +2 -2
  64. data/{system_partials/comments/facebook → widgets/comments/layouts/facebook.html} +1 -1
  65. data/{system_partials/comments/intensedebate → widgets/comments/layouts/intensedebate.html} +1 -1
  66. data/{system_partials/comments/livefyre → widgets/comments/layouts/livefyre.html} +1 -1
  67. data/widgets/google_prettify/config.yml +1 -0
  68. data/widgets/google_prettify/layouts/google_prettify.html +10 -0
  69. metadata +54 -31
  70. data/lib/ruhoh/templaters/base.rb +0 -57
  71. data/system_partials/syntax/google_prettify +0 -11
data/spec/page_spec.rb CHANGED
@@ -5,7 +5,8 @@ module Page
5
5
  describe Ruhoh::Page do
6
6
 
7
7
  before(:each) do
8
- Ruhoh::Utils.stub(:parse_file_as_yaml).and_return({'theme' => "twitter"})
8
+ Ruhoh::Utils.stub(:parse_yaml_file).and_return({'theme' => "twitter"})
9
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
9
10
  Ruhoh.setup(:source => SampleSitePath)
10
11
  end
11
12
 
@@ -13,8 +14,7 @@ module Page
13
14
  it "should setup default templater and converter" do
14
15
  page = Ruhoh::Page.new
15
16
 
16
- page.templater.should == Ruhoh::Templaters::Base
17
- page.converter.should == Ruhoh::Converter
17
+ page.templater.should == Ruhoh::Templaters::RMustache
18
18
  end
19
19
  end
20
20
 
@@ -23,7 +23,7 @@ module Page
23
23
  let(:posts) {
24
24
  {
25
25
  "dictionary" => {
26
- "_posts/sample-id.md" => {"title" => "a cool title"}
26
+ "#{Ruhoh.names.posts}/sample-id.md" => {"title" => "a cool title"}
27
27
  }
28
28
  }
29
29
  }
@@ -44,13 +44,13 @@ module Page
44
44
  before(:all) do
45
45
  Ruhoh::Parsers::Posts.stub(:generate).and_return(posts)
46
46
  Ruhoh::DB.update(:posts)
47
- page.change("_posts/sample-id.md")
47
+ page.change("#{Ruhoh.names.posts}/sample-id.md")
48
48
  end
49
49
  it "should query the posts dictionary and set @data to result" do
50
50
  page.data.should == {"title" => "a cool title"}
51
51
  end
52
52
  it "should set @id to the valid id" do
53
- page.id.should == "_posts/sample-id.md"
53
+ page.id.should == "#{Ruhoh.names.posts}/sample-id.md"
54
54
  end
55
55
  end
56
56
 
@@ -78,24 +78,30 @@ module Page
78
78
  lambda{ page.render }.should raise_error
79
79
  end
80
80
 
81
- it "should process layouts, content, then render using the @templater" do
81
+ it "should process layouts, then render using the @templater" do
82
82
  Ruhoh::DB.stub(:pages).and_return({"blah.md" => {}})
83
83
  page.change('blah.md')
84
-
84
+ layout = "{{{content}}}"
85
+ payload = {}
85
86
  page.should_receive(:process_layouts)
86
- page.should_receive(:process_content)
87
- page.templater.should_receive(:render).with(page)
87
+ page.should_receive(:expand_layouts).and_return(layout)
88
+ page.should_receive(:payload).and_return(payload)
89
+ page.templater.should_receive(:render).with(layout, payload)
88
90
  page.render
89
91
  end
90
92
  end
91
93
 
92
94
  pending "#process_layouts"
95
+
96
+ pending "#expand_layouts"
97
+
98
+ pending "#payload"
93
99
 
94
- describe "#process_content" do
100
+ pending "#content" do
95
101
  let(:page){ Ruhoh::Page.new }
96
102
 
97
103
  it "should raise error if id not set" do
98
- lambda{ page.process_content }.should raise_error
104
+ lambda{ page.content }.should raise_error
99
105
  end
100
106
 
101
107
  context "Id has been set" do
@@ -106,44 +112,27 @@ module Page
106
112
  end
107
113
 
108
114
  it "should raise an error if the page file is malformed" do
109
- Ruhoh::Utils.should_receive(:parse_file).and_return({})
110
- lambda { page.process_content }.should raise_error
115
+ Ruhoh::Utils.should_receive(:parse_page_file).and_return({})
116
+ lambda { page.content }.should raise_error
111
117
  end
112
118
 
113
119
  it "should send the files content to the templater" do
114
- Ruhoh::Utils.should_receive(:parse_file).and_return({"content" => "meep"})
120
+ Ruhoh::Utils.should_receive(:parse_page_file).and_return({"content" => "meep"})
115
121
  page.templater.should_receive(:parse).with("meep", page)
116
122
  page.converter.stub(:convert)
117
- page.process_content
123
+ page.content
118
124
  end
119
125
 
120
126
  it "should send the page to the converter, then set the result as @content" do
121
- Ruhoh::Utils.should_receive(:parse_file).and_return({"content" => "meep"})
127
+ Ruhoh::Utils.should_receive(:parse_page_file).and_return({"content" => "meep"})
122
128
  page.templater.stub(:parse)
123
129
  page.converter.should_receive(:convert).with(page).and_return("yay")
124
- page.process_content
130
+ page.content
125
131
  page.content.should == "yay"
126
132
  end
127
133
  end
128
134
  end
129
135
 
130
- describe "#attributes" do
131
- let(:page){ Ruhoh::Page.new }
132
-
133
- it "should raise error if id not set" do
134
- lambda{ page.attributes }.should raise_error
135
- end
136
-
137
- it "should be a hash with content value set" do
138
- Ruhoh::DB.stub(:pages).and_return({"blah.md" => {}})
139
- page.change('blah.md')
140
-
141
- page.attributes.should be_a_kind_of Hash
142
- page.attributes.should have_key("content")
143
- end
144
-
145
- end
146
-
147
136
  describe "#compiled_path" do
148
137
  let(:page){ Ruhoh::Page.new }
149
138
 
@@ -1,20 +1,12 @@
1
1
  require 'spec_helper'
2
-
3
2
  module Layouts
4
-
5
3
  describe Ruhoh::Parsers::Layouts do
6
4
 
7
5
  before(:each) do
8
6
  expected_theme = "twitter"
9
-
10
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => expected_theme})
11
- Ruhoh.setup(:source => SampleSitePath)
12
-
13
- the_layouts_dir = File.join SampleSitePath, "_templates", "themes", expected_theme, "layouts"
14
-
7
+ the_layouts_dir = File.join(SampleSitePath, Ruhoh.names.themes, expected_theme, Ruhoh.names.layouts)
15
8
  FileUtils.remove_dir(the_layouts_dir, 1) if Dir.exists? the_layouts_dir
16
9
  FileUtils.makedirs the_layouts_dir
17
-
18
10
  expected_layouts.each do |layout_name|
19
11
  full_file_name = File.join(the_layouts_dir, layout_name)
20
12
 
@@ -26,6 +18,9 @@ title: #{layout_name} (test)
26
18
  TEXT
27
19
  end
28
20
  end
21
+
22
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => expected_theme})
23
+ Ruhoh.setup(:source => SampleSitePath)
29
24
  end
30
25
 
31
26
  let(:expected_layouts) { %w{default.html page.html post.html} }
@@ -45,9 +40,6 @@ title: #{layout_name} (test)
45
40
  value.should have_key("content")
46
41
  }
47
42
  end
48
-
49
43
  end
50
-
51
44
  end
52
-
53
- end
45
+ end
@@ -7,14 +7,10 @@ module Pages
7
7
  describe "#generate" do
8
8
 
9
9
  before(:each) do
10
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => "twitter"})
11
- Ruhoh.setup(:source => SampleSitePath)
12
-
13
- the_pages_dir = File.join SampleSitePath, "_pages"
14
-
10
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => "twitter"})
11
+ the_pages_dir = File.join(SampleSitePath, Ruhoh.names.pages)
15
12
  FileUtils.remove_dir(the_pages_dir, 1) if Dir.exists? the_pages_dir
16
13
  Dir.mkdir the_pages_dir
17
-
18
14
  expected_pages.each do |page_name|
19
15
  full_file_name = File.join(the_pages_dir, page_name)
20
16
  File.open full_file_name, "w+" do |file|
@@ -25,10 +21,13 @@ title: #{page_name} (test)
25
21
  TEXT
26
22
  end
27
23
  end
24
+
25
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
26
+ Ruhoh.setup(:source => SampleSitePath)
28
27
  end
29
28
 
30
29
  let(:expected_pages) {
31
- %w{about.md archive.html categories.html index.html pages.html sitemap.txt tags.html}
30
+ %w{about.md archive.html categories.html index.html pages.html sitemap.txt tags.html}.sort
32
31
  }
33
32
 
34
33
  let(:pages){
@@ -36,7 +35,7 @@ title: #{page_name} (test)
36
35
  }
37
36
 
38
37
  it 'should extract valid pages from source directory.' do
39
- pages.keys.sort.should == ['about.md', 'archive.html', 'categories.html', 'index.html', 'pages.html', 'sitemap.txt', 'tags.html']
38
+ pages.keys.sort.should == expected_pages
40
39
  end
41
40
 
42
41
  it 'should return a properly formatted hash for each page' do
@@ -54,7 +53,8 @@ title: #{page_name} (test)
54
53
  context "No user specified exclusions in config." do
55
54
 
56
55
  before(:each) do
57
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => "twitter"})
56
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => "twitter"})
57
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
58
58
  Ruhoh.setup(:source => SampleSitePath)
59
59
  end
60
60
 
@@ -74,10 +74,11 @@ title: #{page_name} (test)
74
74
 
75
75
  it "should return false for a page whose filepath matches a page exclude regular expression." do
76
76
  filepath = 'about.md'
77
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
77
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({
78
78
  'theme' => "twitter",
79
79
  'pages' => {'exclude' => "#{filepath}$"}
80
80
  })
81
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
81
82
  Ruhoh.setup(:source => SampleSitePath)
82
83
  Ruhoh::Parsers::Pages.is_valid_page?(filepath).should == false
83
84
  end
@@ -86,10 +87,11 @@ title: #{page_name} (test)
86
87
  filepath1 = 'test/about.md'
87
88
  filepath2 = 'test/yay.md'
88
89
  filepath3 = 'vest/yay.md'
89
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
90
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({
90
91
  'theme' => "twitter",
91
92
  'pages' => {'exclude' => ['^test', 'blah'] }
92
93
  })
94
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
93
95
  Ruhoh.setup(:source => SampleSitePath)
94
96
 
95
97
  Ruhoh::Parsers::Pages.is_valid_page?(filepath1).should == false
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'spec_helper'
2
3
 
3
4
  module Posts
@@ -5,7 +6,8 @@ module Posts
5
6
  describe Ruhoh::Parsers::Posts do
6
7
 
7
8
  before(:each) do
8
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => "twitter"})
9
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => "twitter"})
10
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
9
11
  Ruhoh.setup(:source => SampleSitePath)
10
12
  end
11
13
 
@@ -46,7 +48,7 @@ module Posts
46
48
  it "should omit the post file and record it as invalid post" do
47
49
  post_path = 'test/hello-world.md'
48
50
  Ruhoh::Parsers::Posts.should_receive(:files).and_return([post_path])
49
- Ruhoh::Utils.stub(:parse_file).and_return({"data" => {"date" => "2012-01-01"}})
51
+ Ruhoh::Utils.stub(:parse_page_file).and_return({"data" => {"date" => "2012-01-01"}})
50
52
 
51
53
  dictionary = Ruhoh::Parsers::Posts.process
52
54
 
@@ -58,7 +60,7 @@ module Posts
58
60
  it "should omit the post file and record it as invalid post" do
59
61
  post_path = 'test/2012-51-01-hello-world.md'
60
62
  Ruhoh::Parsers::Posts.should_receive(:files).and_return([post_path])
61
- Ruhoh::Utils.stub(:parse_file).and_return({"data" => {"title" => "meep"}})
63
+ Ruhoh::Utils.stub(:parse_page_file).and_return({"data" => {"title" => "meep"}})
62
64
 
63
65
  dictionary = Ruhoh::Parsers::Posts.process
64
66
 
@@ -70,32 +72,19 @@ module Posts
70
72
  it "should omit the post file and record it as invalid post" do
71
73
  post_path = 'test/2012-01-01-hello-world.md'
72
74
  Ruhoh::Parsers::Posts.should_receive(:files).and_return([post_path])
73
- Ruhoh::Utils.stub(:parse_file).and_return({"data" => {"date" => "2012-51-01"}})
75
+ Ruhoh::Utils.stub(:parse_page_file).and_return({"data" => {"date" => "2012-51-01"}})
74
76
 
75
77
  dictionary = Ruhoh::Parsers::Posts.process
76
78
 
77
79
  dictionary.should_not include(post_path)
78
80
  end
79
81
  end
80
-
81
- context "A post with no YAML Front Matter" do
82
- it "should omit the post file and record it as invalid post" do
83
- post_path = 'test/2012-01-01-hello-world.md'
84
- Ruhoh::Parsers::Posts.should_receive(:files).and_return([post_path])
85
- Ruhoh::Utils.stub(:parse_file).and_return({})
86
-
87
- dictionary = Ruhoh::Parsers::Posts.process
88
-
89
- dictionary.should_not include(post_path)
90
- end
91
- end
92
-
93
82
  end
94
83
 
95
- describe "#parse_filename" do
84
+ describe "#parse_page_filename" do
96
85
  it "should parse a post filename with DATE into corresponding metadata" do
97
86
  filename = '_posts/2011-10-10-my-post-title.md'
98
- data = Ruhoh::Parsers::Posts.parse_filename(filename)
87
+ data = Ruhoh::Parsers::Posts.parse_page_filename(filename)
99
88
 
100
89
  data['path'].should == "_posts/"
101
90
  data['date'].should == "2011-10-10"
@@ -105,7 +94,7 @@ module Posts
105
94
 
106
95
  it "should parse a post filename without DATE into corresponding metadata" do
107
96
  filename = '_posts/my-post-title.md'
108
- data = Ruhoh::Parsers::Posts.parse_filename(filename)
97
+ data = Ruhoh::Parsers::Posts.parse_page_filename(filename)
109
98
  data['path'].should == "_posts/"
110
99
  data['date'].should == nil
111
100
  data['slug'].should == "my-post-title"
@@ -114,28 +103,27 @@ module Posts
114
103
 
115
104
  it "should return a blank hash if the filename has no extension and therefore invalid" do
116
105
  filename = '_posts/my-post-title'
117
- data = Ruhoh::Parsers::Posts.parse_filename(filename)
106
+ data = Ruhoh::Parsers::Posts.parse_page_filename(filename)
118
107
  data.should == {}
119
108
  end
120
109
  end
121
110
 
122
111
  describe "#permalink" do
123
112
  it "should return the default permalink style (/:categories/:year/:month/:day/:title.html)" do
124
- post = {"date" => "2012-01-02", "title" => "My Blog Post"}
125
- #post = {"date" => "2012-01-02", "title" => "My Blog Post", 'permalink' => :date }
113
+ post = {"date" => "2012-01-02", "title" => "My Blog Post", "id" => "my-blog-post.md"}
126
114
  permalink = Ruhoh::Parsers::Posts.permalink(post)
127
115
  permalink.should == '/2012/01/02/my-blog-post.html'
128
116
  end
129
117
 
130
118
  it "should return the post specific permalink style" do
131
- post = {"date" => "2012-01-02", "title" => "My Blog Post", 'permalink' => '/:categories/:title' }
119
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "My Blog Post", 'permalink' => '/:categories/:title' }
132
120
  permalink = Ruhoh::Parsers::Posts.permalink(post)
133
121
  permalink.should == '/my-blog-post'
134
122
  end
135
123
 
136
124
  context "A post with one category" do
137
125
  it "should include the category path in the permalink." do
138
- post = {"date" => "2012-01-02", "title" => "My Blog Post", 'categories'=> 'ruby/lessons/beginner', 'permalink' => '/:categories/:title' }
126
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "My Blog Post", 'categories'=> 'ruby/lessons/beginner', 'permalink' => '/:categories/:title' }
139
127
  permalink = Ruhoh::Parsers::Posts.permalink(post)
140
128
  permalink.should == '/ruby/lessons/beginner/my-blog-post'
141
129
  end
@@ -143,18 +131,35 @@ module Posts
143
131
 
144
132
  context "A post belonging in two separate categories" do
145
133
  it "should include the first category path in the permalink." do
146
- post = {"date" => "2012-01-02", "title" => "My Blog Post", 'categories'=> ['web', 'ruby/lessons/beginner'], 'permalink' => '/:categories/:title' }
134
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "My Blog Post", 'categories'=> ['web', 'ruby/lessons/beginner'], 'permalink' => '/:categories/:title' }
147
135
  permalink = Ruhoh::Parsers::Posts.permalink(post)
148
136
  permalink.should == '/web/my-blog-post'
149
137
  end
150
138
  end
151
139
 
140
+ context "A post with a literal permalink" do
141
+ it "should use the literal permalink" do
142
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "=) My Blog Post!", 'permalink' => '/dogs/and/cats/summer-pictures' }
143
+ permalink = Ruhoh::Parsers::Posts.permalink(post)
144
+ permalink.should == '/dogs/and/cats/summer-pictures'
145
+ end
146
+ end
147
+
152
148
  context "A post having special characters in the title" do
153
- it "should escape those characters." do
154
- post = {"date" => "2012-01-02", "title" => "=) My Blog Post!", 'permalink' => '/:title' }
149
+ it "should omit those characters." do
150
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "=) My Blog Post!", 'permalink' => '/:title' }
155
151
  permalink = Ruhoh::Parsers::Posts.permalink(post)
156
152
  permalink.should_not == '/=)-my-blog-post-!'
157
- permalink.should == '/%3D%29-my-blog-post%21'
153
+ permalink.should == '/my-blog-post'
154
+ end
155
+ end
156
+
157
+ context "A post having international characters in the title" do
158
+ it "should omit those characters." do
159
+ post = {"id" => "my-blog-post.md", "date" => "2012-01-02", "title" => "=) My Blog Post!", 'permalink' => '/:title' }
160
+ post = {"id" => '안녕하세요-sérieux-è_é-三只熊.md', "date" => "2012-01-02", "title" => '안녕하세요-sérieux è_é-三只熊', 'permalink' => '/:title' }
161
+ permalink = Ruhoh::Parsers::Posts.permalink(post)
162
+ permalink.should == ('/'+CGI::escape('안녕하세요-sérieux-è_é-三只熊'))
158
163
  end
159
164
  end
160
165
  end
@@ -7,7 +7,8 @@ module Routes
7
7
  describe "#generate" do
8
8
 
9
9
  before(:each) do
10
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => "twitter"})
10
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => "twitter"})
11
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
11
12
  Ruhoh.setup(:source => SampleSitePath)
12
13
  end
13
14
 
@@ -7,20 +7,21 @@ module Site
7
7
  describe "#generate" do
8
8
 
9
9
  before(:each) do
10
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({'theme' => "twitter"})
10
+ Ruhoh::Utils.should_receive(:parse_yaml_file).and_return({'theme' => "twitter"})
11
+ Ruhoh::Paths.stub(:theme_is_valid?).and_return(true)
11
12
  Ruhoh.setup(:source => SampleSitePath)
12
13
  end
13
14
 
14
15
  it 'should parse the config and site yaml files' do
15
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).with(Ruhoh.paths.site_source, Ruhoh.files.site).and_return({})
16
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).with(Ruhoh.paths.site_source, Ruhoh.files.config).and_return({})
16
+ Ruhoh::Utils.should_receive(:parse_yaml_file).with(Ruhoh.paths.site_data).and_return({})
17
+ Ruhoh::Utils.should_receive(:parse_yaml_file).with(Ruhoh.paths.config_data).and_return({})
17
18
 
18
19
  Ruhoh::Parsers::Site.generate
19
20
  end
20
21
 
21
22
  it 'should return a site hash with config set as value to key "config" ' do
22
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).with(Ruhoh.paths.site_source, Ruhoh.files.site).and_return({"nav" => [1,2,3]})
23
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).with(Ruhoh.paths.site_source, Ruhoh.files.config).and_return({"theme" => "orange"})
23
+ Ruhoh::Utils.should_receive(:parse_yaml_file).with(Ruhoh.paths.site_data).and_return({"nav" => [1,2,3]})
24
+ Ruhoh::Utils.should_receive(:parse_yaml_file).with(Ruhoh.paths.config_data).and_return({"theme" => "orange"})
24
25
 
25
26
  site = Ruhoh::Parsers::Site.generate
26
27
  site.should == { "nav" => [1,2,3], "config" => {"theme" => "orange"} }
data/spec/setup_spec.rb CHANGED
@@ -4,56 +4,12 @@ module Setup
4
4
  describe "Setup" do
5
5
  describe "#setup" do
6
6
  it 'should setup config, paths, and filters' do
7
- Ruhoh.should_receive(:setup_config).and_return(true)
8
- Ruhoh.should_receive(:setup_paths).and_return(true)
9
- Ruhoh.should_receive(:setup_filters).and_return(true)
7
+ Ruhoh::Config.should_receive(:generate).and_return(true)
8
+ Ruhoh::Paths.should_receive(:generate).and_return(true)
9
+ Ruhoh::Urls.should_receive(:generate).and_return(true)
10
10
  Ruhoh.should_receive(:setup_plugins).and_return(true)
11
11
  Ruhoh.setup
12
12
  end
13
13
  end
14
-
15
- describe "#setup_config" do
16
- context "Invalid _config.yml file" do
17
- it 'should log error and return false if theme is not specified.' do
18
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({})
19
- Ruhoh.log.should_receive(:error)
20
- Ruhoh.setup_config.should be_false
21
- end
22
- end
23
- context "Valid _config.yml file" do
24
- it 'should setup the config struct based on configuration input.' do
25
- custom_permalink = '/my/custom/link'
26
- custom_theme = 'table'
27
- custom_exclude = ['.secret']
28
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
29
- "permalink" => custom_permalink,
30
- "theme" => custom_theme,
31
- 'exclude' => custom_exclude
32
- })
33
-
34
- Ruhoh.setup_config
35
-
36
- Ruhoh.config.permalink.should == custom_permalink
37
- Ruhoh.config.theme.should == custom_theme
38
- Ruhoh.config.theme_path.should == "/_templates/themes/#{custom_theme}"
39
- Ruhoh.config.exclude['posts'].should == custom_exclude
40
- end
41
- end
42
- end
43
-
44
- describe "#setup_filters" do
45
- it 'should add custom exclude filters to the filters variable' do
46
- custom_exclude = ['.secret', '^test']
47
- Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
48
- 'theme' => "twitter",
49
- 'exclude' => custom_exclude
50
- })
51
- Ruhoh.setup_config
52
- Ruhoh.setup_filters
53
-
54
- Ruhoh.filters.posts.should include(/.secret/)
55
- Ruhoh.filters.posts.should include(/^test/)
56
- end
57
- end
58
14
  end
59
15
  end
@@ -0,0 +1,5 @@
1
+ layout : google
2
+ google :
3
+ tracking_id : 'UA-123-12'
4
+ getclicky :
5
+ site_id :
@@ -1,6 +1,6 @@
1
1
  <script>
2
2
  var clicky_site_ids = clicky_site_ids || [];
3
- clicky_site_ids.push({{ site.config.analytics.getclicky.site_id }});
3
+ clicky_site_ids.push({{ config.getclicky.site_id }});
4
4
  (function() {
5
5
  var s = document.createElement('script');
6
6
  s.type = 'text/javascript';
@@ -9,4 +9,4 @@ clicky_site_ids.push({{ site.config.analytics.getclicky.site_id }});
9
9
  ( document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0] ).appendChild( s );
10
10
  })();
11
11
  </script>
12
- <noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ site.config.analytics.getclicky.site_id }}ns.gif" /></p></noscript>
12
+ <noscript><p><img alt="Clicky" width="1" height="1" src="//in.getclicky.com/{{ config.getclicky.site_id }}ns.gif" /></p></noscript>
@@ -1,5 +1,5 @@
1
1
  <script>
2
- var _gaq=[['_setAccount','{{ site.config.analytics.google.tracking_id }}'],['_trackPageview']];
2
+ var _gaq=[['_setAccount','{{ config.google.tracking_id }}'],['_trackPageview']];
3
3
  (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
4
4
  g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
5
5
  s.parentNode.insertBefore(g,s)}(document,'script'));
@@ -0,0 +1,12 @@
1
+ layout : disqus
2
+ disqus :
3
+ short_name : jekyllbootstrap # Change This!
4
+ livefyre :
5
+ site_id : 123
6
+ intensedebate :
7
+ account : 123abc
8
+ facebook :
9
+ appid : 123
10
+ num_posts: 5
11
+ width: 580
12
+ colorscheme: light
@@ -1,7 +1,7 @@
1
1
  <div id="disqus_thread"></div>
2
2
  <script>
3
- {{^site.production }}var disqus_developer = 1;{{/site.production}}
4
- var disqus_shortname = '{{ site.config.comments.disqus.short_name }}'; // required: replace example with your forum shortname
3
+ {{^production }}var disqus_developer = 1;{{/production}}
4
+ var disqus_shortname = '{{ config.disqus.short_name }}'; // required: replace example with your forum shortname
5
5
  /* * * DON'T EDIT BELOW THIS LINE * * */
6
6
  (function() {
7
7
  var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
@@ -6,4 +6,4 @@
6
6
  js.src = "//connect.facebook.net/en_US/all.js#xfbml=1&appId={{ site.config.comments.facebook.appid }}";
7
7
  fjs.parentNode.insertBefore(js, fjs);
8
8
  }(document, 'script', 'facebook-jssdk'));</script>
9
- <div class="fb-comments" data-href="{{ site.production_url }}" data-num-posts="{{ site.config.comments.facebook.num_posts }}" data-width="{{ site.config.comments.facebook.width }}" data-colorscheme="{{ site.config.comments.facebook.colorscheme }}"></div>
9
+ <div class="fb-comments" data-href="{{ site.production_url }}" data-num-posts="{{ config.comments.facebook.num_posts }}" data-width="{{ config.comments.facebook.width }}" data-colorscheme="{{ config.comments.facebook.colorscheme }}"></div>
@@ -1,5 +1,5 @@
1
1
  <script>
2
- var idcomments_acct = '{{ site.config.comments.intensedebate.account }}';
2
+ var idcomments_acct = '{{ config.comments.intensedebate.account }}';
3
3
  var idcomments_post_id;
4
4
  var idcomments_post_url;
5
5
  </script>
@@ -1,6 +1,6 @@
1
1
  <script type='text/javascript' src='http://zor.livefyre.com/wjs/v1.0/javascripts/livefyre_init.js'></script>
2
2
  <script type='text/javascript'>
3
3
  var fyre = LF({
4
- site_id: {{ site.config.comments.livefyre.site_id }}
4
+ site_id: {{ config.comments.livefyre.site_id }}
5
5
  });
6
6
  </script>
@@ -0,0 +1 @@
1
+ linenums : true
@@ -0,0 +1,10 @@
1
+ <!-- Google Prettify -->
2
+ <script src="http://cdnjs.cloudflare.com/ajax/libs/prettify/188.0.0/prettify.js"></script>
3
+ <script>
4
+ var pres = document.getElementsByTagName("pre");
5
+ for (var i=0; i < pres.length; ++i) {
6
+ pres[i].className = "prettyprint {{# config.linenums }}linenums{{/config.linenums}}";
7
+ }
8
+ prettyPrint();
9
+ </script>
10
+ <!-- end Google Prettify -->