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 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}"
@@ -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 = OpenStruct.new( 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
- 'comments'
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
- 'comments link'
26
+ %Q{ <a href="#{self.url}#disqus_thread">Comments</a> }
16
27
  end
17
28
 
18
- # http://bakery.cakephp.org/articles/view/disqus-comment-system-integration-helper
19
-
20
- # <div id="disqus_thread"></div>
21
- # <script type="text/javascript">
22
- # /**
23
- # * var disqus_identifier; [Optional but recommended: Define a unique identifier (e.g. post id or slug) for this thread]
24
- # */
25
- # (function() {
26
- # var dsq = document.createElement('script'); dsq.type = 'text/javascript'; dsq.async = true;
27
- # dsq.src = 'http://vafer.disqus.com/embed.js';
28
- # (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
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: 29
4
+ hash: 19
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 3
10
- version: 0.1.3
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: 2010-10-09 00:00:00 -04:00
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: bluecloth
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: compass
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: compass-960-plugin
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: *id005
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: &id006 !ruby/object:Gem::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: *id006
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