aspec_rb 0.0.14 → 0.0.15

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6f014b57aa727ad15d411f27453bf4533243be7751b07e9159da96680490738f
4
- data.tar.gz: 3e2cb40c81dd7cc8c7b4d6c28338e48e9925f6f952411f2f48bcac69939cefc8
3
+ metadata.gz: 6ceaae8abf8a8ed63c0e9d7a58b5065ad8d56a3e13a6d9b4ca43be3367ff4869
4
+ data.tar.gz: 456c514ec27c3e61b97ec3486415d71be01f38c8809e2c59fb20a3bf44ab823a
5
5
  SHA512:
6
- metadata.gz: 3fff756036c5604ee7a5008ba1c451eb670e50cd09e5314ffa7eb42b82dc71bf8f3a3506680d520d70cf3472c98fb4211e29d471671fb927d753c73aa0b69081
7
- data.tar.gz: 875e7b32dd7634e703330a42a2ca184f0d064f82c2d4bdbad309c0a3064cb403928a331a2b954b13c2aaae84422ce318fc1e59f527d46fa6bd3a528ec99e3e11
6
+ metadata.gz: 0a95bbc8b021c3811a318fc2e270e12dc2e61520d77dfdf5870a1d333ff68d5192a11a66c890a4de7f6f52f3ff4e1322d5442cba81eb4896573f57bed4dc087b
7
+ data.tar.gz: 9053d5e8942fe690eb61df5370fa76ea5191c060d18b1e7c0df390f30dbc0370b41175558cde69655f7e5092697581c89409a5061b61eb1d3105ca73f6bd3f0e
data/Gemfile.lock CHANGED
@@ -1,14 +1,14 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- aspec_rb (0.0.14)
4
+ aspec_rb (0.0.15)
5
5
  asciidoctor
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  asciidoctor (1.5.7.1)
11
- docile (1.3.0)
11
+ docile (1.3.1)
12
12
  json (2.1.0)
13
13
  power_assert (1.1.1)
14
14
  rake (12.3.1)
@@ -31,4 +31,4 @@ DEPENDENCIES
31
31
  test-unit
32
32
 
33
33
  BUNDLED WITH
34
- 1.16.1
34
+ 1.16.2
@@ -7,5 +7,5 @@ module AspecRb
7
7
  # For this deploy config, see https://github.com/tcob/aspec_rb/blob/master/.travis.yml
8
8
  #
9
9
  # Manual release can be performed by running 'bundle install && rake release'
10
- VERSION = '0.0.14'
10
+ VERSION = '0.0.15'
11
11
  end
data/lib/aspec_rb.rb CHANGED
@@ -1,4 +1,6 @@
1
- # frozen_string_literal: true
1
+ require 'asciidoctor/extensions'
2
+
3
+ include ::Asciidoctor
2
4
 
3
5
  # require_relative 'extensions/css_docinfo'
4
6
  require_relative 'extensions/autoxrefs'
@@ -12,6 +12,7 @@ AnchorRx = /\[\[(?:|([\w+?_:][\w+?:.-]*)(?:, *(.+))?)\]\]/
12
12
 
13
13
  ni_includes, includes, doclinks, anchorfixes, intrachapter, interchapter, anchors, xrefs = Array.new(9) { [] }
14
14
 
15
+ # Don't do this!
15
16
  adoc_files = Dir.glob("#{$srcdir}/**/*.adoc")
16
17
 
17
18
  indexincludes = Index.includes
@@ -41,6 +42,8 @@ adoc_files.each do |filename|
41
42
  target = xref.gsub(/,.+/, '')
42
43
  text = xref.gsub(/.+,/, '').lstrip
43
44
  xref = xref.sub(/,.+/, '')
45
+ elsif xref[/^SC_ROPR/]
46
+ text = xref
44
47
  else
45
48
  text = Sform.titleify(xref).strip
46
49
  end
@@ -78,7 +81,7 @@ adoc_files.each do |filename|
78
81
  child = li.match(/(?<=^include::).+?\.adoc(?=\[\])/).to_s
79
82
  child = child.sub(/^\{find\}/, '')
80
83
  childpath = "#{filename.sub(/[^\/]+?\.adoc/, '')}#{child}"
81
- includes.push([filename, child, childpath])
84
+ includes.push([Sform.trim(filename), child, Sform.trim(childpath)])
82
85
 
83
86
  end
84
87
  end
@@ -92,6 +95,7 @@ adoc_files.each do |filename|
92
95
  end
93
96
  end
94
97
 
98
+
95
99
  # For each main include, store a target link
96
100
  anchors.each do |_anchor, full, _filename, link, chapter, main, h1|
97
101
  next unless main && h1
@@ -99,8 +103,9 @@ anchors.each do |_anchor, full, _filename, link, chapter, main, h1|
99
103
  doclinks.push([doc, link, chapter])
100
104
  end
101
105
 
102
- # If a section title has an overriding anchor on the previous line, perform the following fix
103
106
  o_anchors = []
107
+
108
+ # If a section title has an overriding anchor on the previous line, perform the following fix
104
109
  doclinks.delete_if do |doc, _link, mchapter|
105
110
  topleveldoc = "#{$srcdir}/#{mchapter}/#{doc}.adoc"
106
111
  lines = File.foreach(topleveldoc).first(10).join
@@ -113,27 +118,15 @@ end
113
118
  doclinks += o_anchors
114
119
  doclinks.uniq!
115
120
 
116
- # Edit the array of Anchors to point to the parent document *if* it is included.
117
- # TODO use a while loop, repeat until no changes made
118
- tempanchors = []
119
- 3.times do
120
- tempanchors.clear
121
-
122
- # Loop through all includes, if the anchor is contained in an include,
123
- # edit the anchors array to point to its parent instead
124
- includes.each do |parent, _child, childpath|
125
- anchors.delete_if do |anchor, path, filename, text, chapter, main, _h1|
126
- next unless Sform.trim(childpath) == Sform.trim(filename)
127
- tempanchors.push([anchor, path, Sform.trim(parent), text, chapter, main])
128
- true
129
- end
130
- end
131
-
132
- anchors += tempanchors
133
- anchors.uniq!
121
+ includes.each do |parent, _child, childpath|
122
+ anchors.map! { |anchor, path, filename, text, chapter, main, _h1|
123
+ filename = parent if childpath == path
124
+ [anchor, path, filename, text, chapter, main, _h1]
125
+ }
134
126
  end
135
127
 
136
- tempanchors.clear
128
+ anchors.uniq!
129
+ tempanchors = []
137
130
 
138
131
  anchors.delete_if do |anchor, apath, trim_parent, parent, amain, achapter|
139
132
  doclinks.each do |doc, link, dchapter|
@@ -143,6 +136,8 @@ anchors.delete_if do |anchor, apath, trim_parent, parent, amain, achapter|
143
136
  end
144
137
  end
145
138
 
139
+
140
+ tempanchors.uniq!
146
141
  anchors += tempanchors
147
142
  anchors.uniq!
148
143
 
@@ -155,7 +150,7 @@ xrefs.each do |xref, xpath, _xfilename, _xtext, xtarget, _xchapter|
155
150
  afilename = '' if xpath == apath
156
151
  # xtext = xref if xtext.empty?
157
152
  afilename.sub!(/^_/, '') if afilename[/^_/]
158
- fix = "#{afilename}##{atext},#{xtarget}"
153
+ fix = "#{afilename}##{atext},#{_xtext}"
159
154
  anchorfixes.push([anchor, fix, xref])
160
155
  end
161
156
  end
@@ -163,7 +158,9 @@ end
163
158
  Extensions.register do
164
159
  preprocessor do
165
160
  process do |_document, reader|
166
- Reader.new reader.readlines.map { |line|
161
+ # return reader if reader.eof?
162
+
163
+ replacement_lines = reader.read_lines.map do |line|
167
164
  if line[/\<\<(?!Req)(.+?)\>\>/]
168
165
  anchorfixes.each do |original, fix|
169
166
  next unless line[/\<\<#{original}(,.+?)?\>\>/]
@@ -177,7 +174,9 @@ Extensions.register do
177
174
  2.times { line.sub!(/`/, '') }
178
175
  end
179
176
  line
180
- }
177
+ end
178
+ reader.unshift_lines replacement_lines
179
+ reader
181
180
  end
182
181
  end
183
182
  end
@@ -1,6 +1,4 @@
1
- # frozen_string_literal: true
2
-
3
- require 'asciidoctor/extensions' unless RUBY_ENGINE == 'opal'
1
+ require 'asciidoctor/extensions'
4
2
 
5
3
  Extensions.register do
6
4
  block do
@@ -56,7 +56,7 @@ adoc_files.each do |filename|
56
56
  child = li.match(/(?<=^include::).+?\.adoc(?=\[\])/).to_s
57
57
  child = child.sub(/^\{find\}/, '')
58
58
  childpath = "#{filename.sub(/[^\/]+?\.adoc/, '')}#{child}"
59
- includes.push([filename, child, childpath])
59
+ includes.push([Sform.trim(filename), child, Sform.trim(childpath)])
60
60
 
61
61
  end
62
62
  end
@@ -105,20 +105,21 @@ end
105
105
 
106
106
  # TODO: - see if editing the array in-place is better using map!
107
107
  includes += ni_includes
108
+ tempreqs = []
108
109
 
109
110
  # Edit the array of Requirements to point to the parent document *if* it is included.
110
111
  # TODO use a while loop, repeat until no changes made
111
112
  3.times do
112
113
  # initialize an array
113
- tempreqs = []
114
+ tempreqs.clear
114
115
 
115
116
  # Loop through all includes, if the requirement is contained in an include,
116
117
  # edit the $reqs array to point to its parent instead
117
118
  includes.each do |parent, _child, childpath|
118
119
  # Delete the child req if matched
119
120
  $reqs.delete_if do |rid, line, path, _filename, main, chapter|
120
- next unless Sform.trim(childpath) == Sform.trim(path)
121
- tempreqs.push([rid, line, Sform.trim(parent), parent, main, chapter])
121
+ next unless childpath == path
122
+ tempreqs.push([rid, line, parent, parent, main, chapter])
122
123
  true
123
124
  end
124
125
  end
@@ -180,4 +181,4 @@ Extensions.register do
180
181
  (create_anchor parent, final_link, type: :link, target: uri).convert
181
182
  end
182
183
  end
183
- end
184
+ end
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  module Search
4
2
  # Some special handling for sanitizing the search json
5
3
  def self.sanitize_json(str)
data/lib/html_chunker.rb CHANGED
@@ -87,20 +87,20 @@ class MultipageHtml5Converter
87
87
 
88
88
  def write(output, target)
89
89
  outdir = ::File.dirname target
90
- puts '[CHUNKED HTML] Generating chapters:'
90
+ puts '[ASPEC] Generating chapters'
91
91
  @documents.each do |doc|
92
92
  filename = doc.attr 'docname'
93
93
  filename = filename.sub(/^_/, '')
94
94
  outfile = ::File.join outdir, %(#{filename}.html)
95
- puts "[CHAPTER] #{outfile}"
96
95
  ::File.open(outfile, 'w') do |f|
97
96
  f.write doc.convert
98
97
  end
99
98
  end
100
- puts "[HTML INDEX] Generating index at #{target}"
101
99
  ::File.open(target, 'w') do |f|
102
100
  f.write output
103
101
  end
102
+ puts '[ASPEC] Done'
103
+ puts "[ASPEC] Index generated at #{target}"
104
104
  load 'postprocessors/generate_toc.rb'
105
105
  load 'postprocessors/fulltext_search.rb'
106
106
  end
@@ -1,19 +1,17 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'nokogiri'
4
2
  require 'fileutils'
5
- require 'open-uri'
6
3
  require_relative '../extensions/utils/utils'
7
4
 
8
5
  @json = ''
9
6
  gendir = 'generated-docs' # TODO: - do not hardcode
10
7
 
11
8
  html_files = Dir.glob("#{gendir}/**/*.html")
9
+ puts "[ASPEC] Creating full-text search index."
12
10
 
13
11
  def add_heading(subsection, url, level)
14
12
  id = subsection.at(level).attr('id')
15
13
  sub_url = url + '#' + id
16
- @json += Search.add_to_index(sub_url, id, subsection.at(level).text, subsection.text)
14
+ @json << Search.add_to_index(sub_url, id, subsection.at(level).text, subsection.text)
17
15
  end
18
16
 
19
17
  html_files.each do |file|
@@ -27,25 +25,21 @@ html_files.each do |file|
27
25
  page.xpath("//div[@class='sect1']").each do |section|
28
26
  if section.at_css('div.sect2')
29
27
 
28
+ # consider xpath for multiple cases - be more specific in the query, dont have so many nested ifs
30
29
  section.xpath("//div[@class='sect2' or @class='sect2 language-n4js']").each do |subsection|
31
30
  if subsection.at_css('div.sect3')
32
31
 
33
32
  section.xpath("//div[@class='sect3']").each do |subsection|
34
- if subsection.at_css('div.sect4')
35
- add_heading(subsection, url, 'h5')
36
- else
37
- add_heading(subsection, url, 'h4')
38
- end
33
+ add_heading(subsection, url, 'h4')
39
34
  end
40
35
 
41
36
  else
42
37
  add_heading(subsection, url, 'h3')
43
38
  end
44
39
  end
45
-
46
40
  else
47
41
  text = section.xpath("//div[@class='sect1' or @class='sect1 language-n4js']").css('p').text
48
- @json += Search.add_to_index(url, slug, title, text)
42
+ @json << Search.add_to_index(url, slug, title, text)
49
43
  end
50
44
  end
51
45
  end
@@ -67,3 +61,5 @@ filtered_data = data.sub(marker, jsonindex)
67
61
  File.open(searchpage, 'w') do |f|
68
62
  f.write(filtered_data)
69
63
  end
64
+
65
+ puts "[ASPEC] Full-text search index built."
@@ -1,5 +1,3 @@
1
- # frozen_string_literal: true
2
-
3
1
  require 'nokogiri'
4
2
  require 'open-uri'
5
3
 
@@ -25,9 +23,8 @@ appendices = []
25
23
 
26
24
  html_files.each do |file|
27
25
  next if file == "#{gendir}/search.html" || file[%r{^#{gendir}\/index}]
28
- if file == "#{gendir}/revision_history.html"
29
- toc += %(<li><a href="revision_history.html">Revision History</a></li>)
30
- end
26
+ toc << %(<li><a href="revision_history.html">Revision History</a></li>) if file == "#{gendir}/revision_history.html"
27
+
31
28
  page = Nokogiri::HTML(open(file))
32
29
  filename = file.sub(%r{^#{gendir}\/}, '')
33
30
 
@@ -78,7 +75,7 @@ anchors.each do |file, id, text, level|
78
75
  if level > prev_level
79
76
  if i != 0
80
77
  toc = toc.chomp("</li>\n")
81
- toc += " <a href=\"#\" data-toggle=\"collapse\" data-target=\"#tocnav_#{id}\"><i class=\"fa fa-plus-square\" aria-hidden=\"true\"></i></a><ul>
78
+ toc << " <a href=\"#\" data-toggle=\"collapse\" data-target=\"#tocnav_#{id}\"><i class=\"fa fa-plus-square\" aria-hidden=\"true\"></i></a><ul>
82
79
  <div id=\"tocnav_#{id}\" class=\"collapse\">
83
80
  <li><a href=\"#{file}##{id}\">#{text}</a></li>\n"
84
81
  li = ''
@@ -87,16 +84,17 @@ anchors.each do |file, id, text, level|
87
84
  # Close nested <ul> elements
88
85
  elsif level < prev_level
89
86
  diff = prev_level - level
90
- diff.times { toc += "</div></ul>\n" }
87
+ diff.times { toc << "</div></ul>\n" }
91
88
  end
89
+
92
90
  i += 1
93
- toc += li
91
+ toc << li
94
92
  # assign a variable with current level to compare in next iteration
95
93
  prev_level = level
96
94
  end
97
95
 
98
96
  # Close the toc
99
- toc += '</ul>'
97
+ toc << '</ul>'
100
98
 
101
99
  html_files.each do |fi|
102
100
  file = fi.sub(%r{#{gendir}\/}, '')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aspec_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.14
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - tcob
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-05-15 00:00:00.000000000 Z
11
+ date: 2018-06-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  version: '0'
135
135
  requirements: []
136
136
  rubyforge_project:
137
- rubygems_version: 2.7.6
137
+ rubygems_version: 2.7.7
138
138
  signing_key:
139
139
  specification_version: 4
140
140
  summary: Asciidoctor extensions for large HTML documents