awestruct 0.1.3 → 0.1.4
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/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
|