aweplug 1.0.0.a3 → 1.0.0.a4

Sign up to get free protection for your applications and to get access to all the features.
@@ -11,7 +11,7 @@ module Aweplug
11
11
 
12
12
  def initialize repository, layout, output_dir
13
13
  @repo = repository
14
- @output_dir = output_dir
14
+ @output_dir = Pathname.new output_dir
15
15
  @layout = layout
16
16
  end
17
17
 
@@ -22,22 +22,33 @@ module Aweplug
22
22
  metadata = extract_metadata(file)
23
23
  metadata[:commits] = commit_info @repo, Pathname.new(file)
24
24
 
25
- page.send 'metadata=', @metadata
25
+ page.send 'metadata=', metadata
26
26
  # TODO: Upload to DCP
27
27
  end
28
28
  end
29
29
 
30
30
  def extract_metadata(file)
31
- (Kramdown::Document.new File.readlines(file).join, :input => 'QuickStartParser').root.options[:metadata]
31
+ document = (::Kramdown::Document.new File.readlines(file).join, :input => 'QuickStartParser')
32
+ toc = ::Kramdown::Converter::Toc.convert(document.root)
33
+ toc_items = toc[0].children.select { |el| el.value.options[:level] == 2 }.map do |t|
34
+ {:id => t.attr[:id], :text => t.value.children.first.value}
35
+ end
36
+
37
+ metadata = document.root.options[:metadata]
38
+ metadata[:toc] = toc_items
39
+ metadata
32
40
  end
33
41
 
34
42
  def add_to_site(site, file)
43
+ page_path = Pathname.new file
35
44
  page = site.engine.load_site_page file
36
45
  page.layout = @layout
37
- page.output_path = File.join @output_path, page.output_filename
46
+ page.output_path = File.join @output_dir, page_path.relative_path_from(Pathname.new @repo).dirname, 'index.html'
47
+ site.pages << page
38
48
  page
39
49
  end
40
50
  end
41
51
  end
42
52
  end
43
53
  end
54
+
@@ -12,47 +12,75 @@ module Kramdown
12
12
  @block_parsers.unshift :target_product_metadata
13
13
  @block_parsers.unshift :source_metadata
14
14
  @block_parsers.unshift :summary_metadata
15
+ @block_parsers.unshift :product_metadata
16
+ @block_parsers.unshift :title_hack_metadata
15
17
 
16
18
  @root.options[:metadata] = {:author => '', :level => '',
17
19
  :technologies => '', :target_product => '',
18
20
  :source => '', :summary => ''}
19
21
  end
20
22
 
23
+ HEADER_ID=/(?:[ \t]+\{#([A-Za-z][\w:-]*)\})?/
24
+ SETEXT_HEADER_START = /^(#{OPT_SPACE}[^ \t].*?)#{HEADER_ID}[ \t]*?\n(=)+\s*?\n/
25
+
26
+ def parse_title_hack_metadata
27
+ return false if !after_block_boundary?
28
+
29
+ #start_line_number = @src.current_line_number
30
+ @src.pos += @src.matched_size
31
+ text, id, _ = @src[1], @src[2], @src[3]
32
+ text.strip!
33
+ el = new_block_el(:header, nil, nil, :level => 1, :raw_text => text, :location => 1)
34
+ add_text(text, el)
35
+ el.attr['id'] = id if id
36
+
37
+ @root.options[:metadata][:title] = text
38
+ #@tree.children << el
39
+ true
40
+ end
41
+ define_parser(:title_hack_metadata, SETEXT_HEADER_START)
42
+
21
43
  def parse_author_metadata
22
44
  @src.pos += @src.matched_size
23
- @root.options[:metadata][:author] = @src[3]
45
+ @root.options[:metadata][:author] = @src[2].rstrip
24
46
  end
25
- define_parser(:author_metadata, /^(Author:)(\s+)(.*?)$/)
47
+ define_parser(:author_metadata, /^(Author:)#{OPT_SPACE}(.*?)\s*?\n/)
26
48
 
27
49
  def parse_level_metadata
28
50
  @src.pos += @src.matched_size
29
- @root.options[:metadata][:level] = @src[3]
51
+ @root.options[:metadata][:level] = @src[2].rstrip
30
52
  end
31
- define_parser(:level_metadata, /^(Level:)(\s+)(.*?)$/)
53
+ define_parser(:level_metadata, /^(Level:)#{OPT_SPACE}(.*?)\s*?\n/)
32
54
 
33
55
  def parse_technologies_metadata
34
56
  @src.pos += @src.matched_size
35
- @root.options[:metadata][:technologies] = @src[3]
57
+ @root.options[:metadata][:technologies] = @src[2].rstrip
36
58
  end
37
- define_parser(:technologies_metadata, /^(Technologies:)(\s+)(.*?)$/)
59
+ define_parser(:technologies_metadata, /^(Technologies:)#{OPT_SPACE}(.*?)\s*?\n/)
38
60
 
39
61
  def parse_target_product_metadata
40
62
  @src.pos += @src.matched_size
41
- @root.options[:metadata][:target_product] = @src[3]
63
+ @root.options[:metadata][:target_product] = @src[2].rstrip
42
64
  end
43
- define_parser(:target_product_metadata, /^(Target Product:)(\s+)(.*?)$/)
65
+ define_parser(:target_product_metadata, /^(Target Product:)#{OPT_SPACE}(.*?)\s*?\n/)
44
66
 
45
67
  def parse_source_metadata
46
68
  @src.pos += @src.matched_size
47
- @root.options[:metadata][:source] = @src[3][1..-2]
69
+ @root.options[:metadata][:source] = @src[2][1..-2].rstrip
48
70
  end
49
- define_parser(:source_metadata, /^(Source:)(\s+)(.*?)$/)
71
+ define_parser(:source_metadata, /^(Source:)#{OPT_SPACE}(.*?)\s*?\n/)
50
72
 
51
73
  def parse_summary_metadata
52
74
  @src.pos += @src.matched_size
53
- @root.options[:metadata][:summary] = @src[3]
75
+ @root.options[:metadata][:summary] = @src[2].rstrip
76
+ end
77
+ define_parser(:summary_metadata, /^(Summary:)#{OPT_SPACE}(.*?)\s*?\n/)
78
+
79
+ def parse_product_metadata
80
+ @src.pos += @src.matched_size
81
+ @root.options[:metadata][:product] = @src[2].rstrip
54
82
  end
55
- define_parser(:summary_metadata, /^(Summary:)(\s+)(.*?)$/)
83
+ define_parser(:product_metadata, /^(Product Versions:)#{OPT_SPACE}(.*?)\s*?\n/)
56
84
  end
57
85
  end
58
86
  end
@@ -1,4 +1,4 @@
1
1
  module Aweplug
2
- VERSION='1.0.0.a3'
2
+ VERSION='1.0.0.a4'
3
3
  end
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aweplug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.a3
4
+ version: 1.0.0.a4
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-12-09 00:00:00.000000000 Z
12
+ date: 2013-12-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: octokit