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 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