awestruct 0.1.3 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/awestruct +19 -2
- data/lib/awestruct/engine.rb +6 -1
- data/lib/awestruct/extensions/disqus.rb +25 -31
- data/lib/awestruct/extensions/template.atom.haml +1 -1
- data/lib/awestruct/front_matter_file.rb +3 -2
- data/lib/awestruct/textilable.rb +21 -0
- data/lib/awestruct/textile_file.rb +23 -0
- metadata +56 -10
data/bin/awestruct
CHANGED
@@ -24,6 +24,7 @@ def parse(args)
|
|
24
24
|
:base_url=>nil,
|
25
25
|
:profile=>nil,
|
26
26
|
:deploy=>false,
|
27
|
+
:script=>nil,
|
27
28
|
} )
|
28
29
|
|
29
30
|
opts = OptionParser.new do |opts|
|
@@ -73,6 +74,9 @@ def parse(args)
|
|
73
74
|
opts.on( '-g', '--[no-]generate', 'Generated site' ) do |g|
|
74
75
|
options.generate = g
|
75
76
|
end
|
77
|
+
opts.on( '--run SCRIPT', 'Force a regeneration' ) do |script|
|
78
|
+
options.script = script
|
79
|
+
end
|
76
80
|
|
77
81
|
opts.separator ''
|
78
82
|
opts.separator "Common options:"
|
@@ -151,10 +155,23 @@ if ( options.deploy )
|
|
151
155
|
exit
|
152
156
|
end
|
153
157
|
|
154
|
-
threads = []
|
155
|
-
|
156
158
|
default_base_url = 'http://localhost:4242'
|
157
159
|
|
160
|
+
def camelize(str)
|
161
|
+
str.to_s.gsub(/\/(.?)/) { "::#{$1.upcase}" }.gsub(/(?:^|_)(.)/) { $1.upcase }
|
162
|
+
end
|
163
|
+
|
164
|
+
if ( options.script )
|
165
|
+
puts "Running #{options.script} and exiting"
|
166
|
+
require "awestruct/scripts/#{options.script}"
|
167
|
+
script_class = eval "Awestruct::Scripts::#{camelize(options.script)}"
|
168
|
+
script = script_class.new(*ARGV)
|
169
|
+
script.run
|
170
|
+
exit
|
171
|
+
end
|
172
|
+
|
173
|
+
threads = []
|
174
|
+
|
158
175
|
if ( options.server )
|
159
176
|
hostname = ( options.bind_addr == '0.0.0.0' ? 'localhost' : options.bind_addr )
|
160
177
|
default_base_url = "http://#{hostname}:#{options.port}"
|
data/lib/awestruct/engine.rb
CHANGED
@@ -5,10 +5,13 @@ require 'compass'
|
|
5
5
|
require 'ninesixty'
|
6
6
|
require 'time'
|
7
7
|
|
8
|
+
require 'hashery/opencascade'
|
9
|
+
|
8
10
|
require 'awestruct/config'
|
9
11
|
require 'awestruct/site'
|
10
12
|
require 'awestruct/haml_file'
|
11
13
|
require 'awestruct/erb_file'
|
14
|
+
require 'awestruct/textile_file'
|
12
15
|
require 'awestruct/maruku_file'
|
13
16
|
require 'awestruct/sass_file'
|
14
17
|
require 'awestruct/scss_file'
|
@@ -101,6 +104,8 @@ module Awestruct
|
|
101
104
|
page = HamlFile.new( site, path, fixed_relative_path )
|
102
105
|
elsif ( path =~ /\.erb$/ )
|
103
106
|
page = ErbFile.new( site, path, fixed_relative_path )
|
107
|
+
elsif ( path =~ /\.textile$/ )
|
108
|
+
page = TextileFile.new( site, path, fixed_relative_path )
|
104
109
|
elsif ( path =~ /\.md$/ )
|
105
110
|
page = MarukuFile.new( site, path, fixed_relative_path )
|
106
111
|
elsif ( path =~ /\.sass$/ )
|
@@ -353,7 +358,7 @@ module Awestruct
|
|
353
358
|
obj.each do |k,v|
|
354
359
|
result[k] = massage_yaml(v)
|
355
360
|
end
|
356
|
-
result =
|
361
|
+
result = OpenCascade.new(result.inject({}) { |memo, (k, v)| memo[k.to_sym] = v; memo })
|
357
362
|
when Array
|
358
363
|
result = []
|
359
364
|
obj.each do |v|
|
@@ -8,42 +8,36 @@ module Awestruct
|
|
8
8
|
|
9
9
|
module Disqus
|
10
10
|
def disqus_comments()
|
11
|
-
|
11
|
+
%Q{
|
12
|
+
<div id="disqus_thread"></div>
|
13
|
+
<script type="text/javascript">
|
14
|
+
var disqus_url = "#{self.url}";
|
15
|
+
(function() {
|
16
|
+
var dsq = document.createElement("script"); dsq.type = "text/javascript"; dsq.async = true;
|
17
|
+
dsq.src = "http://#{site.disqus}.disqus.com/embed.js";
|
18
|
+
(document.getElementsByTagName("head")[0] || document.getElementsByTagName("body")[0]).appendChild(dsq);
|
19
|
+
})();
|
20
|
+
</script>
|
21
|
+
<noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript=#{site.disqus}">comments powered by Disqus.</a></noscript>
|
22
|
+
}
|
12
23
|
end
|
13
24
|
|
14
25
|
def disqus_comments_link()
|
15
|
-
|
26
|
+
%Q{ <a href="#{self.url}#disqus_thread">Comments</a> }
|
16
27
|
end
|
17
28
|
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
# </script>
|
31
|
-
# <noscript>Please enable JavaScript to view the <a href="http://disqus.com/?ref_noscript=vafer">comments powered by Disqus.</a></noscript>
|
32
|
-
# <a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
|
33
|
-
|
34
|
-
# <script type="text/javascript">
|
35
|
-
# var disqus_shortname = 'vafer';
|
36
|
-
# (function () {
|
37
|
-
# var s = document.createElement('script'); s.async = true;
|
38
|
-
# s.src = 'http://disqus.com/forums/vafer/count.js';
|
39
|
-
# (document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
|
40
|
-
# }());
|
41
|
-
# </script>
|
42
|
-
|
43
|
-
# <a href="http://example.com/my_article.html#disqus_thread">Comments</a>
|
44
|
-
|
45
|
-
# post_id = self.post_id ? self.post_id : Digest::SHA1.hexdigest( self.url )
|
46
|
-
|
29
|
+
def disqus_comments_link_loader()
|
30
|
+
%Q{
|
31
|
+
<script type="text/javascript">
|
32
|
+
var disqus_shortname = "#{site.disqus}";
|
33
|
+
(function () {
|
34
|
+
var s = document.createElement('script'); s.async = true;
|
35
|
+
s.src = "http://disqus.com/forums/#{site.disqus}/count.js";
|
36
|
+
(document.getElementsByTagName('HEAD')[0] || document.getElementsByTagName('BODY')[0]).appendChild(s);
|
37
|
+
}());
|
38
|
+
</script>
|
39
|
+
}
|
40
|
+
end
|
47
41
|
end
|
48
42
|
end
|
49
43
|
end
|
@@ -25,5 +25,5 @@
|
|
25
25
|
%summary
|
26
26
|
#{summarize( html_to_text( entry.content ), 100 )}...
|
27
27
|
%content{:type=>'html'}
|
28
|
-
= clean_html( escape_once( fully_qualify_urls( site.base_url, entry.content )
|
28
|
+
= clean_html( escape_once( fully_qualify_urls( site.base_url, find_and_preserve( entry.content ) ) ) )
|
29
29
|
|
@@ -4,6 +4,7 @@ module Awestruct
|
|
4
4
|
class FrontMatterFile < RenderableFile
|
5
5
|
|
6
6
|
attr_reader :raw_page_content
|
7
|
+
attr_reader :front_matter
|
7
8
|
|
8
9
|
def initialize(site, source_path, relative_source_path)
|
9
10
|
super( site, source_path, relative_source_path )
|
@@ -40,8 +41,8 @@ module Awestruct
|
|
40
41
|
end
|
41
42
|
|
42
43
|
begin
|
43
|
-
front_matter = YAML.load( yaml_content ) || {}
|
44
|
-
front_matter.each do |k,v|
|
44
|
+
@front_matter = YAML.load( yaml_content ) || {}
|
45
|
+
@front_matter.each do |k,v|
|
45
46
|
self.send( "#{k}=", v )
|
46
47
|
end
|
47
48
|
rescue=>e
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Awestruct
|
2
|
+
|
3
|
+
module Textilable
|
4
|
+
def render(context)
|
5
|
+
rendered = ''
|
6
|
+
begin
|
7
|
+
rendered = RedCloth.new( context.interpolate_string( raw_page_content ) ).to_html
|
8
|
+
rescue => e
|
9
|
+
puts e
|
10
|
+
puts e.backtrace
|
11
|
+
end
|
12
|
+
rendered
|
13
|
+
end
|
14
|
+
|
15
|
+
def content
|
16
|
+
context = site.engine.create_context(self)
|
17
|
+
render(context)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'awestruct/front_matter_file'
|
2
|
+
require 'awestruct/textilable'
|
3
|
+
require 'redcloth'
|
4
|
+
|
5
|
+
module Awestruct
|
6
|
+
class TextileFile < FrontMatterFile
|
7
|
+
|
8
|
+
include Textilable
|
9
|
+
|
10
|
+
def initialize(site, source_path, relative_source_path)
|
11
|
+
super(site, source_path, relative_source_path)
|
12
|
+
end
|
13
|
+
|
14
|
+
def output_filename
|
15
|
+
File.basename( self.source_path, '.textile' ) + output_extension
|
16
|
+
end
|
17
|
+
|
18
|
+
def output_extension
|
19
|
+
'.html'
|
20
|
+
end
|
21
|
+
|
22
|
+
end
|
23
|
+
end
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: awestruct
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 1
|
9
|
-
-
|
10
|
-
version: 0.1.
|
9
|
+
- 4
|
10
|
+
version: 0.1.4
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Bob McWhirter
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date:
|
18
|
+
date: 2011-02-16 00:00:00 -05:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -47,7 +47,7 @@ dependencies:
|
|
47
47
|
type: :runtime
|
48
48
|
version_requirements: *id002
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
|
-
name:
|
50
|
+
name: hashery
|
51
51
|
prerelease: false
|
52
52
|
requirement: &id003 !ruby/object:Gem::Requirement
|
53
53
|
none: false
|
@@ -61,7 +61,7 @@ dependencies:
|
|
61
61
|
type: :runtime
|
62
62
|
version_requirements: *id003
|
63
63
|
- !ruby/object:Gem::Dependency
|
64
|
-
name:
|
64
|
+
name: bluecloth
|
65
65
|
prerelease: false
|
66
66
|
requirement: &id004 !ruby/object:Gem::Requirement
|
67
67
|
none: false
|
@@ -75,9 +75,25 @@ dependencies:
|
|
75
75
|
type: :runtime
|
76
76
|
version_requirements: *id004
|
77
77
|
- !ruby/object:Gem::Dependency
|
78
|
-
name:
|
78
|
+
name: RedCloth
|
79
79
|
prerelease: false
|
80
80
|
requirement: &id005 !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - <=
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
hash: 61
|
86
|
+
segments:
|
87
|
+
- 4
|
88
|
+
- 2
|
89
|
+
- 5
|
90
|
+
version: 4.2.5
|
91
|
+
type: :runtime
|
92
|
+
version_requirements: *id005
|
93
|
+
- !ruby/object:Gem::Dependency
|
94
|
+
name: maruku
|
95
|
+
prerelease: false
|
96
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
81
97
|
none: false
|
82
98
|
requirements:
|
83
99
|
- - ">="
|
@@ -87,11 +103,39 @@ dependencies:
|
|
87
103
|
- 0
|
88
104
|
version: "0"
|
89
105
|
type: :runtime
|
90
|
-
version_requirements: *
|
106
|
+
version_requirements: *id006
|
107
|
+
- !ruby/object:Gem::Dependency
|
108
|
+
name: compass
|
109
|
+
prerelease: false
|
110
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
111
|
+
none: false
|
112
|
+
requirements:
|
113
|
+
- - ">="
|
114
|
+
- !ruby/object:Gem::Version
|
115
|
+
hash: 3
|
116
|
+
segments:
|
117
|
+
- 0
|
118
|
+
version: "0"
|
119
|
+
type: :runtime
|
120
|
+
version_requirements: *id007
|
121
|
+
- !ruby/object:Gem::Dependency
|
122
|
+
name: compass-960-plugin
|
123
|
+
prerelease: false
|
124
|
+
requirement: &id008 !ruby/object:Gem::Requirement
|
125
|
+
none: false
|
126
|
+
requirements:
|
127
|
+
- - ">="
|
128
|
+
- !ruby/object:Gem::Version
|
129
|
+
hash: 3
|
130
|
+
segments:
|
131
|
+
- 0
|
132
|
+
version: "0"
|
133
|
+
type: :runtime
|
134
|
+
version_requirements: *id008
|
91
135
|
- !ruby/object:Gem::Dependency
|
92
136
|
name: org-ruby
|
93
137
|
prerelease: false
|
94
|
-
requirement: &
|
138
|
+
requirement: &id009 !ruby/object:Gem::Requirement
|
95
139
|
none: false
|
96
140
|
requirements:
|
97
141
|
- - ">="
|
@@ -101,7 +145,7 @@ dependencies:
|
|
101
145
|
- 0
|
102
146
|
version: "0"
|
103
147
|
type: :runtime
|
104
|
-
version_requirements: *
|
148
|
+
version_requirements: *id009
|
105
149
|
description:
|
106
150
|
email: bob@mcwhirter.org
|
107
151
|
executables:
|
@@ -148,6 +192,8 @@ files:
|
|
148
192
|
- lib/awestruct/sassable.rb
|
149
193
|
- lib/awestruct/scss_file.rb
|
150
194
|
- lib/awestruct/site.rb
|
195
|
+
- lib/awestruct/textilable.rb
|
196
|
+
- lib/awestruct/textile_file.rb
|
151
197
|
- lib/awestruct/util/default_inflections.rb
|
152
198
|
- lib/awestruct/util/inflector.rb
|
153
199
|
- lib/awestruct/verbatim_file.rb
|