awestructx 0.4.0 → 0.4.1.x1

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.
Files changed (37) hide show
  1. data/lib/awestruct/astruct_mixin.rb +13 -3
  2. data/lib/awestruct/cli/auto.rb +18 -4
  3. data/lib/awestruct/cli/deploy.rb +38 -0
  4. data/lib/awestruct/cli/invoker.rb +12 -1
  5. data/lib/awestruct/config.rb +10 -0
  6. data/lib/awestruct/dependencies.rb +102 -0
  7. data/lib/awestruct/deploy/github_pages_deploy.rb +61 -0
  8. data/lib/awestruct/deploy/rsync_deploy.rb +51 -0
  9. data/lib/awestruct/deployers.rb +15 -0
  10. data/lib/awestruct/engine.rb +49 -13
  11. data/lib/awestruct/extensions/atomizer.rb +3 -3
  12. data/lib/awestruct/extensions/minify.rb +21 -23
  13. data/lib/awestruct/extensions/posts.rb +4 -4
  14. data/lib/awestruct/extensions/sitemap.rb +1 -0
  15. data/lib/awestruct/handler_chains.rb +15 -32
  16. data/lib/awestruct/handlers/asciidoc_handler.rb +57 -0
  17. data/lib/awestruct/handlers/base_handler.rb +23 -4
  18. data/lib/awestruct/handlers/coffeescript_handler.rb +48 -0
  19. data/lib/awestruct/handlers/erb_handler.rb +44 -0
  20. data/lib/awestruct/handlers/file_handler.rb +6 -3
  21. data/lib/awestruct/handlers/front_matter_handler.rb +5 -0
  22. data/lib/awestruct/handlers/haml_handler.rb +14 -2
  23. data/lib/awestruct/handlers/layout_handler.rb +4 -2
  24. data/lib/awestruct/handlers/markdown_handler.rb +14 -0
  25. data/lib/awestruct/handlers/orgmode_handler.rb +48 -0
  26. data/lib/awestruct/handlers/page_delegating_handler.rb +54 -0
  27. data/lib/awestruct/handlers/restructuredtext_handler.rb +67 -0
  28. data/lib/awestruct/handlers/sass_handler.rb +7 -0
  29. data/lib/awestruct/handlers/scss_handler.rb +7 -0
  30. data/lib/awestruct/handlers/textile_handler.rb +15 -0
  31. data/lib/awestruct/layouts.rb +1 -0
  32. data/lib/awestruct/page.rb +27 -14
  33. data/lib/awestruct/page_loader.rb +15 -5
  34. data/lib/awestruct/pipeline.rb +7 -0
  35. data/lib/awestruct/version.rb +1 -1
  36. data/lib/guard/awestruct.rb +1 -1
  37. metadata +173 -267
@@ -2,6 +2,7 @@
2
2
  require 'awestruct/context'
3
3
 
4
4
  require 'awestruct/handlers/no_op_handler'
5
+ require 'awestruct/handlers/page_delegating_handler'
5
6
  require 'hashery/open_cascade'
6
7
  require 'ostruct'
7
8
  require 'awestruct/astruct'
@@ -12,13 +13,19 @@ module Awestruct
12
13
 
13
14
  attr_accessor :site
14
15
  attr_accessor :handler
15
-
16
- attr_reader :dependencies
16
+ attr_reader :dependencies
17
17
 
18
18
  def initialize(site, handler=nil)
19
19
  @site = site
20
- @handler = handler || Awestruct::Handlers::NoOpHandler.new( site )
21
- @dependencies = []
20
+ case (handler)
21
+ when Page
22
+ @handler = Awestruct::Handlers::LayoutHandler.new( site, Awestruct::Handlers::PageDelegatingHandler.new( site, handler ) )
23
+ when nil
24
+ @handler = Awestruct::Handlers::NoOpHandler.new( site )
25
+ else
26
+ @handler = handler
27
+ end
28
+ @dependencies = Awestruct::Dependencies.new( self )
22
29
  end
23
30
 
24
31
  def prepare!
@@ -59,25 +66,24 @@ module Awestruct
59
66
  (@output_path || handler.output_path).to_s
60
67
  end
61
68
 
62
- def output_extension
63
- handler.output_extension
64
- end
65
-
66
69
  def output_path=(path)
67
70
  case ( path )
68
- when Pathname:
69
- @output_path = path
70
- else
71
- @output_path = Pathname.new( path )
71
+ when Pathname then @output_path = path
72
+ else @output_path = Pathname.new( path )
72
73
  end
73
74
  end
74
75
 
76
+ def output_extension
77
+ handler.output_extension
78
+ end
79
+
80
+
75
81
  def source_path
76
82
  handler.path.to_s
77
83
  end
78
84
 
79
85
  def stale?
80
- handler.stale? || @dependencies.any?(&:stale?)
86
+ handler.stale? || @dependencies.dependencies.any?(&:stale?)
81
87
  end
82
88
 
83
89
  def stale_output?(output_path)
@@ -102,6 +108,10 @@ module Awestruct
102
108
  t
103
109
  end
104
110
 
111
+ def all_dependencies
112
+ @dependencies + handler.dependencies
113
+ end
114
+
105
115
  def content_syntax
106
116
  handler.content_syntax
107
117
  end
@@ -111,7 +121,10 @@ module Awestruct
111
121
  end
112
122
 
113
123
  def rendered_content(context=create_context(), with_layouts=true)
114
- handler.rendered_content( context, with_layouts )
124
+ Awestruct::Dependencies.push_page( self ) if context.site.config.track_dependencies
125
+ c = handler.rendered_content( context, with_layouts )
126
+ Awestruct::Dependencies.pop_page if context.site.config.track_dependencies
127
+ site.engine.pipeline.apply_transformers( site, self, c )
115
128
  end
116
129
 
117
130
  def content(with_layouts=false)
@@ -24,23 +24,27 @@ module Awestruct
24
24
  pages = []
25
25
  root_dir.find do |path|
26
26
  if ( path == root_dir )
27
+ #puts "skip #{path}"
27
28
  next
28
29
  end
29
30
  basename = File.basename( path )
30
31
  if ( basename == '.htaccess' )
31
32
  #special case
32
33
  elsif ( basename =~ /^[_.]/ )
34
+ #puts "skip #{path} and prune"
33
35
  Find.prune
34
36
  next
35
37
  end
36
38
  relative_path = path.relative_path_from( root_dir ).to_s
37
39
  if ignore?(relative_path)
40
+ #puts "skip ignored #{path} and prune"
38
41
  Find.prune
39
42
  next
40
43
  end
41
44
  unless path.directory?
42
45
  page = load_page( path, prepare )
43
46
  if ( page )
47
+ #puts "loaded! #{path} and added to site"
44
48
  #inherit_front_matter( page )
45
49
  site.send( @target ) << page
46
50
  pages << page
@@ -54,16 +58,22 @@ module Awestruct
54
58
 
55
59
  def load_page(path,prepare=:inline)
56
60
  pathname = case( path )
57
- when Pathname:
58
- pathname = path
59
- else
60
- pathname = Pathname.new( path )
61
+ when Pathname then pathname = path
62
+ else pathname = Pathname.new( path )
61
63
  end
62
64
  chain = site.engine.pipeline.handler_chains[ path ]
63
65
  return nil if chain.nil?
64
66
  handler = chain.create(site, Pathname.new(path))
65
67
  p = Page.new( site, handler )
66
- p.prepare! if prepare == :inline
68
+ if ( @target == :layouts )
69
+ p.__is_layout = true
70
+ else
71
+ p.__is_layout = false
72
+ end
73
+ p.track_dependencies!
74
+ if prepare == :inline
75
+ p.prepare!
76
+ end
67
77
  p
68
78
  end
69
79
 
@@ -37,6 +37,13 @@ module Awestruct
37
37
  end
38
38
  end
39
39
 
40
+ def apply_transformers(site, page, rendered)
41
+ @transformers.each do |t|
42
+ rendered = t.transform( site, page, rendered )
43
+ end
44
+ rendered
45
+ end
46
+
40
47
  def mixin_helpers(context)
41
48
  context.extend( Awestruct::ContextHelper )
42
49
  @helpers.each do |h|
@@ -1,4 +1,4 @@
1
1
 
2
2
  module Awestruct
3
- VERSION='0.4.0'
3
+ VERSION='0.4.1.x1'
4
4
  end
@@ -25,7 +25,7 @@ module Guard
25
25
 
26
26
  def run_on_change(paths)
27
27
  paths.each do |path|
28
- unless ( path =~ /_site/ )
28
+ unless ( path =~ %r(#{File.basename( @engine.config.output_dir) }) || path =~ /.awestruct/ )
29
29
  @engine.generate_page_by_output_path( path )
30
30
  end
31
31
  end