ruhoh 0.2.0 → 0.2.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/Gemfile +1 -1
- data/history.json +62 -0
- data/lib/ruhoh.rb +9 -10
- data/lib/ruhoh/converters/converter.rb +2 -2
- data/lib/ruhoh/parsers/pages.rb +8 -11
- data/lib/ruhoh/parsers/posts.rb +9 -3
- data/lib/ruhoh/version.rb +1 -1
- data/ruhoh.gemspec +1 -1
- data/spec/parsers/pages_spec.rb +4 -5
- data/spec/setup_spec.rb +4 -4
- metadata +13 -13
- data/history.txt +0 -25
data/Gemfile
CHANGED
data/history.json
ADDED
@@ -0,0 +1,62 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"version" : "0.2.1",
|
4
|
+
"date" : "9.5.2012",
|
5
|
+
"changes" : [
|
6
|
+
"Treat all exclude values for posts/pages filenames as regular expressions. Strings are passed to Regex.new()"
|
7
|
+
],
|
8
|
+
"features" : [
|
9
|
+
"Define 'pretty' paths for pages without using folder/index.md format.",
|
10
|
+
"Add ability to exclude files from posts folder."
|
11
|
+
]
|
12
|
+
},
|
13
|
+
{ "version" : "0.2.0",
|
14
|
+
"date" : "4.5.2012",
|
15
|
+
"changes" : [
|
16
|
+
"[change] Dates in post filenames are now optional but will be required in metadata.",
|
17
|
+
"[remove] _draft folder. Drafts are now simply a 'type' of post.",
|
18
|
+
"[remove] publish and un-publish in favor of specifying 'type' meta attribute.",
|
19
|
+
"[add] titleize method to client which renames draft filenames to their titles if set.",
|
20
|
+
"[change] /_draft panel is now /dash with updated UI.",
|
21
|
+
"[change] - rackup configuration is now through Ruhoh::Program.preview."
|
22
|
+
],
|
23
|
+
"features" : [
|
24
|
+
"Maintain file extensions for files that don't respond to a converter.",
|
25
|
+
"Add 'development'/'production' environment configuration flag.",
|
26
|
+
"@ben-biddington Introduces local temporary directory as SampleSitePath.",
|
27
|
+
"@ben-biddington adds Travis integration."
|
28
|
+
]
|
29
|
+
},
|
30
|
+
{ "version" : "0.1.4",
|
31
|
+
"date" : "4.5.2012",
|
32
|
+
"bugs" : [
|
33
|
+
"Fix invalid byte sequence in US-ASCII by forcing UTF-8"
|
34
|
+
]
|
35
|
+
},
|
36
|
+
{ "version" : "0.1.3",
|
37
|
+
"date" : "19.4.2012",
|
38
|
+
"bugs" : [
|
39
|
+
"Fix drafts not maintaining file extension when publishing",
|
40
|
+
"Tags helper should use tags database.",
|
41
|
+
"Fix for properly handling filepaths on Windows machines."
|
42
|
+
]
|
43
|
+
},
|
44
|
+
{ "version" : "0.1.2",
|
45
|
+
"date" : "18.4.2012",
|
46
|
+
"bugs" : [
|
47
|
+
"Fix bug with YAML psych/syck errors"
|
48
|
+
]
|
49
|
+
},
|
50
|
+
{ "version" : "0.1.1",
|
51
|
+
"date" : "18.4.2012",
|
52
|
+
"bugs" : [
|
53
|
+
"@tkellen tidies up partials + fix 'paths.theme' error in theme scaffold."
|
54
|
+
]
|
55
|
+
},
|
56
|
+
{ "version" : "0.1.0",
|
57
|
+
"date" : "12.4.2012",
|
58
|
+
"features" : [
|
59
|
+
"Initial public release"
|
60
|
+
]
|
61
|
+
}
|
62
|
+
]
|
data/lib/ruhoh.rb
CHANGED
@@ -43,7 +43,7 @@ class Ruhoh
|
|
43
43
|
Folders = Struct.new(:database, :pages, :posts, :templates, :themes, :layouts, :partials, :media, :syntax, :compiled)
|
44
44
|
Files = Struct.new(:site, :config, :dashboard)
|
45
45
|
Filters = Struct.new(:posts, :pages, :static)
|
46
|
-
Config = Struct.new(:permalink, :theme, :theme_path, :media_path, :syntax_path, :exclude, :env)
|
46
|
+
Config = Struct.new(:permalink, :pages_permalink, :theme, :theme_path, :media_path, :syntax_path, :exclude, :env)
|
47
47
|
Paths = Struct.new(
|
48
48
|
:site_source, :database, :pages, :posts, :theme, :layouts, :partials, :global_partials, :media, :syntax,
|
49
49
|
:compiled, :dashboard)
|
@@ -87,7 +87,12 @@ class Ruhoh
|
|
87
87
|
@config.media_path = File.join('/', @folders.media)
|
88
88
|
@config.syntax_path = File.join('/', @folders.templates, @folders.syntax)
|
89
89
|
@config.permalink = site_config['permalink']
|
90
|
-
@config.
|
90
|
+
@config.pages_permalink = site_config['pages']['permalink'] rescue nil
|
91
|
+
excluded_pages = site_config['pages']['exclude'] rescue nil
|
92
|
+
@config.exclude = {
|
93
|
+
"posts" => Array(site_config['exclude'] || nil),
|
94
|
+
"pages" => Array(excluded_pages),
|
95
|
+
}
|
91
96
|
@config.env = site_config['env'] || nil
|
92
97
|
@config
|
93
98
|
end
|
@@ -111,14 +116,8 @@ class Ruhoh
|
|
111
116
|
|
112
117
|
# filename filters
|
113
118
|
def self.setup_filters
|
114
|
-
|
115
|
-
exclude.
|
116
|
-
|
117
|
-
@filters.pages = { 'names' => [], 'regexes' => [] }
|
118
|
-
exclude.each {|node|
|
119
|
-
@filters.pages['names'] << node if node.is_a?(String)
|
120
|
-
@filters.pages['regexes'] << node if node.is_a?(Regexp)
|
121
|
-
}
|
119
|
+
@filters.pages = @config.exclude['pages'].map {|node| Regexp.new(node) }
|
120
|
+
@filters.posts = @config.exclude['posts'].map {|node| Regexp.new(node) }
|
122
121
|
@filters
|
123
122
|
end
|
124
123
|
|
data/lib/ruhoh/parsers/pages.rb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
1
|
class Ruhoh
|
2
|
-
|
3
2
|
module Parsers
|
4
|
-
|
5
3
|
module Pages
|
6
4
|
|
7
5
|
# Public: Generate the Pages dictionary.
|
@@ -45,8 +43,7 @@ class Ruhoh
|
|
45
43
|
def self.is_valid_page?(filepath)
|
46
44
|
return false if FileTest.directory?(filepath)
|
47
45
|
return false if ['.'].include? filepath[0]
|
48
|
-
|
49
|
-
Ruhoh.filters.pages['regexes'].each {|regex| return false if filepath =~ regex }
|
46
|
+
Ruhoh.filters.pages.each {|regex| return false if filepath =~ regex }
|
50
47
|
true
|
51
48
|
end
|
52
49
|
|
@@ -66,24 +63,24 @@ class Ruhoh
|
|
66
63
|
#
|
67
64
|
# Returns [String] the permalink for this page.
|
68
65
|
def self.permalink(page)
|
69
|
-
ext = File.extname(page['id'])
|
70
66
|
url = '/'
|
67
|
+
ext = File.extname(page['id'])
|
71
68
|
url += if ['.md', '.markdown'].include?(ext)
|
72
69
|
page['id'].gsub(Regexp.new("#{ext}$"), '.html')
|
73
70
|
else
|
74
71
|
page['id']
|
75
72
|
end
|
76
73
|
|
77
|
-
|
78
|
-
url = url.
|
79
|
-
|
74
|
+
url = url.split('/').reject{ |part| part[0] == '.' }.join('/')
|
75
|
+
url = url.gsub(/\/index.html$/, '')
|
76
|
+
if page['permalink'] == 'pretty' || Ruhoh.config.pages_permalink == 'pretty'
|
77
|
+
url = url.gsub(/\.html$/, '')
|
78
|
+
end
|
80
79
|
url = "/" if url.empty?
|
81
|
-
|
80
|
+
|
82
81
|
url
|
83
82
|
end
|
84
83
|
|
85
84
|
end # Pages
|
86
|
-
|
87
85
|
end #Parsers
|
88
|
-
|
89
86
|
end #Ruhoh
|
data/lib/ruhoh/parsers/posts.rb
CHANGED
@@ -79,13 +79,19 @@ class Ruhoh
|
|
79
79
|
def self.files
|
80
80
|
FileUtils.cd(Ruhoh.paths.site_source) {
|
81
81
|
return Dir["#{Ruhoh.folders.posts}/**/*.*"].select { |filename|
|
82
|
-
next
|
83
|
-
next if ['.'].include? filename[0]
|
82
|
+
next unless self.is_valid_page?(filename)
|
84
83
|
true
|
85
84
|
}
|
86
85
|
}
|
87
86
|
end
|
88
|
-
|
87
|
+
|
88
|
+
def self.is_valid_page?(filepath)
|
89
|
+
return false if FileTest.directory?(filepath)
|
90
|
+
return false if ['.'].include? filepath[0]
|
91
|
+
Ruhoh.filters.posts.each {|regex| return false if filepath =~ regex }
|
92
|
+
true
|
93
|
+
end
|
94
|
+
|
89
95
|
def self.ordered_posts(dictionary)
|
90
96
|
ordered_posts = []
|
91
97
|
dictionary.each_value { |val| ordered_posts << val }
|
data/lib/ruhoh/version.rb
CHANGED
data/ruhoh.gemspec
CHANGED
data/spec/parsers/pages_spec.rb
CHANGED
@@ -72,24 +72,23 @@ title: #{page_name} (test)
|
|
72
72
|
|
73
73
|
context "Exclude array is passed into config." do
|
74
74
|
|
75
|
-
it "should return false for a filepath
|
75
|
+
it "should return false for a page whose filepath matches a page exclude regular expression." do
|
76
76
|
filepath = 'about.md'
|
77
77
|
Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
|
78
78
|
'theme' => "twitter",
|
79
|
-
'exclude' => filepath
|
79
|
+
'pages' => {'exclude' => "#{filepath}$"}
|
80
80
|
})
|
81
81
|
Ruhoh.setup(:source => SampleSitePath)
|
82
|
-
|
83
82
|
Ruhoh::Parsers::Pages.is_valid_page?(filepath).should == false
|
84
83
|
end
|
85
84
|
|
86
|
-
it "should return false for a filepath matching a regular expression in exclude array" do
|
85
|
+
it "should return false for a page filepath matching a regular expression in pages exclude array" do
|
87
86
|
filepath1 = 'test/about.md'
|
88
87
|
filepath2 = 'test/yay.md'
|
89
88
|
filepath3 = 'vest/yay.md'
|
90
89
|
Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
|
91
90
|
'theme' => "twitter",
|
92
|
-
'exclude' =>
|
91
|
+
'pages' => {'exclude' => ['^test', 'blah'] }
|
93
92
|
})
|
94
93
|
Ruhoh.setup(:source => SampleSitePath)
|
95
94
|
|
data/spec/setup_spec.rb
CHANGED
@@ -35,14 +35,14 @@ module Setup
|
|
35
35
|
Ruhoh.config.permalink.should == custom_permalink
|
36
36
|
Ruhoh.config.theme.should == custom_theme
|
37
37
|
Ruhoh.config.theme_path.should == "/_templates/themes/#{custom_theme}"
|
38
|
-
Ruhoh.config.exclude.should == custom_exclude
|
38
|
+
Ruhoh.config.exclude['posts'].should == custom_exclude
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
42
42
|
|
43
43
|
describe "#setup_filters" do
|
44
44
|
it 'should add custom exclude filters to the filters variable' do
|
45
|
-
custom_exclude = ['.secret',
|
45
|
+
custom_exclude = ['.secret', '^test']
|
46
46
|
Ruhoh::Utils.should_receive(:parse_file_as_yaml).and_return({
|
47
47
|
'theme' => "twitter",
|
48
48
|
'exclude' => custom_exclude
|
@@ -50,8 +50,8 @@ module Setup
|
|
50
50
|
Ruhoh.setup_config
|
51
51
|
Ruhoh.setup_filters
|
52
52
|
|
53
|
-
Ruhoh.filters.
|
54
|
-
Ruhoh.filters.
|
53
|
+
Ruhoh.filters.posts.should include(/.secret/)
|
54
|
+
Ruhoh.filters.posts.should include(/^test/)
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruhoh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-05-
|
12
|
+
date: 2012-05-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rack
|
16
|
-
requirement: &
|
16
|
+
requirement: &70126524196260 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '1.4'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *70126524196260
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: mustache
|
27
|
-
requirement: &
|
27
|
+
requirement: &70126524225960 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ~>
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0.99'
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *70126524225960
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: directory_watcher
|
38
|
-
requirement: &
|
38
|
+
requirement: &70126524225500 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ~>
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '1.4'
|
44
44
|
type: :runtime
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *70126524225500
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: maruku
|
49
|
-
requirement: &
|
49
|
+
requirement: &70126524225040 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0.6'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *70126524225040
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: psych
|
60
|
-
requirement: &
|
60
|
+
requirement: &70126524224580 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ~>
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '1.3'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *70126524224580
|
69
69
|
description: Ruhoh is a Universal API for your static blog.
|
70
70
|
email: plusjade@gmail.com
|
71
71
|
executables:
|
@@ -78,7 +78,7 @@ files:
|
|
78
78
|
- Rakefile
|
79
79
|
- bin/ruhoh
|
80
80
|
- dash.html
|
81
|
-
- history.
|
81
|
+
- history.json
|
82
82
|
- lib/ruhoh.rb
|
83
83
|
- lib/ruhoh/client/client.rb
|
84
84
|
- lib/ruhoh/client/help.yml
|
data/history.txt
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
|
2
|
-
4.5.2012
|
3
|
-
0.2.0 - API changes:
|
4
|
-
- [change] Dates in post filenames are now optional but will be required in metadata.
|
5
|
-
- [remove] _draft folder. Drafts are now simply a 'type' of post.
|
6
|
-
- [remove] publish and un-publish in favor of specifying 'type' meta attribute.
|
7
|
-
- [add] titleize method to client which renames draft filenames to their titles if set.
|
8
|
-
- [change] /_draft panel is now /dash with updated UI.
|
9
|
-
- [change] - rackup configuration is now through Ruhoh::Program.preview.
|
10
|
-
- FEATURES:
|
11
|
-
- Maintain file extensions for files that don't respond to a converter.
|
12
|
-
- Add 'development'/'production' environment configuration flag.
|
13
|
-
- @ben-biddington Introduces local temporary directory as SampleSitePath.
|
14
|
-
- @ben-biddington adds Travis integration.
|
15
|
-
0.1.4 - BUG: Fix invalid byte sequence in US-ASCII by forcing UTF-8
|
16
|
-
19.4.2012
|
17
|
-
0.1.3 - BUG: Fix drafts not maintaining file extension when publishing
|
18
|
-
BUG: tags helper should use tags database.
|
19
|
-
BUG: Fix for properly handling filepaths on Windows machines.
|
20
|
-
18.4.2012
|
21
|
-
0.1.2 - BUG: Fix bug with YAML psych/syck errors.
|
22
|
-
0.1.1 - @tkellen tidies up partials + fix 'paths.theme' error in theme scaffold.
|
23
|
-
12.4.2012
|
24
|
-
0.1.0 - Initial public release.
|
25
|
-
|