henshin 0.1.2 → 0.1.3
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/VERSION +1 -1
- data/henshin.gemspec +3 -2
- data/lib/henshin.rb +1 -1
- data/lib/henshin/post.rb +19 -5
- data/lib/henshin/site.rb +1 -1
- data/test/site/posts/cat/test.markdown +6 -0
- metadata +4 -3
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.3
|
data/henshin.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{henshin}
|
8
|
-
s.version = "0.1.
|
8
|
+
s.version = "0.1.3"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["hawx"]
|
12
|
-
s.date = %q{2010-05-
|
12
|
+
s.date = %q{2010-05-27}
|
13
13
|
s.default_executable = %q{henshin}
|
14
14
|
s.description = %q{Henshin is a static site generator, with a plugin system and more}
|
15
15
|
s.email = %q{m@hawx.me}
|
@@ -52,6 +52,7 @@ Gem::Specification.new do |s|
|
|
52
52
|
"test/site/options.yaml",
|
53
53
|
"test/site/plugins/test.rb",
|
54
54
|
"test/site/posts/Testing-Stuff.markdown",
|
55
|
+
"test/site/posts/cat/test.markdown",
|
55
56
|
"test/site/posts/lorem-ipsum.markdown",
|
56
57
|
"test/site/sass/print.sass",
|
57
58
|
"test/site/static.html",
|
data/lib/henshin.rb
CHANGED
@@ -25,7 +25,7 @@ module Henshin
|
|
25
25
|
:time_zone => 'GMT',
|
26
26
|
:author => '',
|
27
27
|
:layout => '',
|
28
|
-
:file_name => '{title-with-dashes}.{extension}',
|
28
|
+
:file_name => '<{category}/>{title-with-dashes}.{extension}',
|
29
29
|
:permalink => '/{year}/{month}/{date}/{title}.html',
|
30
30
|
:plugins => ['maraku', 'liquid'],
|
31
31
|
:root => '.',
|
data/lib/henshin/post.rb
CHANGED
@@ -30,22 +30,33 @@ module Henshin
|
|
30
30
|
'date' => '(\d{4}-\d{2}-\d{2})',
|
31
31
|
'date-time' => '(\d{4}-\d{2}-\d{2} at \d{2}:\d{2})',
|
32
32
|
'xml-date-time' => '(\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2})?((\+|-)\d{2}:\d{2})?)',
|
33
|
+
'category' => '([a-zA-Z0-9_ -]+)',
|
33
34
|
'extension' => "(#{ site.config[:extensions].join('|') })"}
|
34
35
|
|
35
36
|
file_parser = config[:file_name]
|
36
|
-
# create string regex and keep order of info
|
37
37
|
data_order = []
|
38
|
+
|
39
|
+
# put together regex
|
38
40
|
m = file_parser.gsub(/\{([a-z-]+)\}/) do
|
39
41
|
data_order << $1
|
40
42
|
parser[$1]
|
41
43
|
end
|
44
|
+
|
45
|
+
# replace optional '<stuff>'
|
46
|
+
m.gsub!(/<(.+)>/) do
|
47
|
+
# this may lead to problems, well I say may...
|
48
|
+
data_order.unshift( 'optional' )
|
49
|
+
"(#{$1})?"
|
50
|
+
end
|
51
|
+
|
42
52
|
# convert string to actual regex
|
43
53
|
matcher = Regexp.new(m)
|
44
54
|
|
45
55
|
override = {}
|
46
|
-
|
47
|
-
|
48
|
-
file_data.
|
56
|
+
name = path[ (config[:root]+'/posts/').size..-1 ]
|
57
|
+
|
58
|
+
file_data = name.match( matcher ).captures
|
59
|
+
file_data.each_with_index do |data, i|
|
49
60
|
if data_order[i].include? 'title'
|
50
61
|
if data_order[i].include? 'dashes'
|
51
62
|
override[:title] = data.gsub(/-/, ' ').titlize
|
@@ -56,6 +67,8 @@ module Henshin
|
|
56
67
|
override[:date] = data
|
57
68
|
elsif data_order[i].include? 'extension'
|
58
69
|
override[:extension] = data
|
70
|
+
elsif data_order[i].include? 'category'
|
71
|
+
override[:category] = data
|
59
72
|
end
|
60
73
|
end
|
61
74
|
self.override( override )
|
@@ -135,7 +148,8 @@ module Henshin
|
|
135
148
|
partials = {'year' => self.date.year,
|
136
149
|
'month' => self.date.month,
|
137
150
|
'date' => self.date.day,
|
138
|
-
'title' => self.title.slugify
|
151
|
+
'title' => self.title.slugify,
|
152
|
+
'category' => self.category || ''}
|
139
153
|
|
140
154
|
config[:permalink].gsub(/\{([a-z-]+)\}/) do
|
141
155
|
partials[$1]
|
data/lib/henshin/site.rb
CHANGED
@@ -43,7 +43,7 @@ module Henshin
|
|
43
43
|
# Adds all items in 'posts' to the posts array
|
44
44
|
def read_posts
|
45
45
|
path = File.join(config[:root], 'posts')
|
46
|
-
Dir.glob(path + '
|
46
|
+
Dir.glob(path + '/**/*.*').each do |post|
|
47
47
|
@posts << Post.new(post, self)
|
48
48
|
end
|
49
49
|
end
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 1
|
8
|
-
-
|
9
|
-
version: 0.1.
|
8
|
+
- 3
|
9
|
+
version: 0.1.3
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- hawx
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-05-
|
17
|
+
date: 2010-05-27 00:00:00 +01:00
|
18
18
|
default_executable: henshin
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
@@ -84,6 +84,7 @@ files:
|
|
84
84
|
- test/site/options.yaml
|
85
85
|
- test/site/plugins/test.rb
|
86
86
|
- test/site/posts/Testing-Stuff.markdown
|
87
|
+
- test/site/posts/cat/test.markdown
|
87
88
|
- test/site/posts/lorem-ipsum.markdown
|
88
89
|
- test/site/sass/print.sass
|
89
90
|
- test/site/static.html
|