alb-test 1.0.0

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 (129) hide show
  1. checksums.yaml +7 -0
  2. data/bookbinder.gemspec +46 -0
  3. data/install_bin/bookbinder +5 -0
  4. data/lib/bookbinder/cli.rb +105 -0
  5. data/lib/bookbinder/code_example_reader.rb +95 -0
  6. data/lib/bookbinder/colorizer.rb +16 -0
  7. data/lib/bookbinder/commands/bind.rb +120 -0
  8. data/lib/bookbinder/commands/collection.rb +181 -0
  9. data/lib/bookbinder/commands/components/bind/directory_preparer.rb +33 -0
  10. data/lib/bookbinder/commands/components/bind/layout_preparer.rb +27 -0
  11. data/lib/bookbinder/commands/components/command_options.rb +45 -0
  12. data/lib/bookbinder/commands/components/imprint/directory_preparer.rb +24 -0
  13. data/lib/bookbinder/commands/generate.rb +92 -0
  14. data/lib/bookbinder/commands/imprint.rb +55 -0
  15. data/lib/bookbinder/commands/punch.rb +33 -0
  16. data/lib/bookbinder/commands/update_local_doc_repos.rb +42 -0
  17. data/lib/bookbinder/commands/watch.rb +100 -0
  18. data/lib/bookbinder/config/checkers/archive_menu_checker.rb +29 -0
  19. data/lib/bookbinder/config/checkers/ditamap_presence_checker.rb +27 -0
  20. data/lib/bookbinder/config/checkers/duplicate_section_name_checker.rb +33 -0
  21. data/lib/bookbinder/config/checkers/products_checker.rb +34 -0
  22. data/lib/bookbinder/config/checkers/repository_name_presence_checker.rb +34 -0
  23. data/lib/bookbinder/config/checkers/required_keys_checker.rb +18 -0
  24. data/lib/bookbinder/config/checkers/section_presence_checker.rb +15 -0
  25. data/lib/bookbinder/config/configuration.rb +119 -0
  26. data/lib/bookbinder/config/configuration_decorator.rb +54 -0
  27. data/lib/bookbinder/config/dita_config_generator.rb +61 -0
  28. data/lib/bookbinder/config/fetcher.rb +64 -0
  29. data/lib/bookbinder/config/imprint/configuration.rb +24 -0
  30. data/lib/bookbinder/config/product_config.rb +34 -0
  31. data/lib/bookbinder/config/section_config.rb +85 -0
  32. data/lib/bookbinder/config/validator.rb +33 -0
  33. data/lib/bookbinder/config/yaml_loader.rb +34 -0
  34. data/lib/bookbinder/css_link_checker.rb +67 -0
  35. data/lib/bookbinder/directory_helpers.rb +15 -0
  36. data/lib/bookbinder/dita_command_creator.rb +95 -0
  37. data/lib/bookbinder/dita_html_for_middleman_formatter.rb +45 -0
  38. data/lib/bookbinder/errors/programmer_mistake.rb +5 -0
  39. data/lib/bookbinder/html_document_manipulator.rb +21 -0
  40. data/lib/bookbinder/ingest/cloner_factory.rb +26 -0
  41. data/lib/bookbinder/ingest/destination_directory.rb +21 -0
  42. data/lib/bookbinder/ingest/git_accessor.rb +102 -0
  43. data/lib/bookbinder/ingest/git_cloner.rb +36 -0
  44. data/lib/bookbinder/ingest/local_filesystem_cloner.rb +66 -0
  45. data/lib/bookbinder/ingest/missing_working_copy.rb +27 -0
  46. data/lib/bookbinder/ingest/repo_identifier.rb +45 -0
  47. data/lib/bookbinder/ingest/section_repository.rb +49 -0
  48. data/lib/bookbinder/ingest/update_failure.rb +15 -0
  49. data/lib/bookbinder/ingest/update_success.rb +12 -0
  50. data/lib/bookbinder/ingest/working_copy.rb +36 -0
  51. data/lib/bookbinder/local_filesystem_accessor.rb +122 -0
  52. data/lib/bookbinder/middleman_runner.rb +50 -0
  53. data/lib/bookbinder/postprocessing/link_checker.rb +125 -0
  54. data/lib/bookbinder/postprocessing/redirection.rb +38 -0
  55. data/lib/bookbinder/preprocessing/dita_html_preprocessor.rb +91 -0
  56. data/lib/bookbinder/preprocessing/dita_pdf_preprocessor.rb +48 -0
  57. data/lib/bookbinder/preprocessing/link_to_site_gen_dir.rb +39 -0
  58. data/lib/bookbinder/preprocessing/preprocessor.rb +26 -0
  59. data/lib/bookbinder/server_director.rb +30 -0
  60. data/lib/bookbinder/sheller.rb +52 -0
  61. data/lib/bookbinder/streams/colorized_stream.rb +25 -0
  62. data/lib/bookbinder/streams/filter_stream.rb +22 -0
  63. data/lib/bookbinder/subnav/navigation_entries_from_html_toc.rb +59 -0
  64. data/lib/bookbinder/subnav/navigation_entries_from_markdown_root.rb +116 -0
  65. data/lib/bookbinder/subnav/pdf_config_creator.rb +50 -0
  66. data/lib/bookbinder/subnav/subnav_generator.rb +28 -0
  67. data/lib/bookbinder/subnav/subnav_generator_factory.rb +29 -0
  68. data/lib/bookbinder/subnav/template_creator.rb +71 -0
  69. data/lib/bookbinder/terminal.rb +19 -0
  70. data/lib/bookbinder/values/output_locations.rb +91 -0
  71. data/lib/bookbinder/values/product_info.rb +11 -0
  72. data/lib/bookbinder/values/section.rb +58 -0
  73. data/lib/bookbinder/values/subnav_template.rb +4 -0
  74. data/lib/bookbinder/values/user_message.rb +15 -0
  75. data/master_middleman/archive_drop_down_menu.rb +50 -0
  76. data/master_middleman/bookbinder_helpers.rb +282 -0
  77. data/master_middleman/compass_runner.rb +0 -0
  78. data/master_middleman/config.rb +45 -0
  79. data/master_middleman/proof.rb +90 -0
  80. data/master_middleman/quicklinks_renderer.rb +80 -0
  81. data/master_middleman/source/javascripts/all.js +2 -0
  82. data/master_middleman/source/javascripts/book.js +1 -0
  83. data/master_middleman/source/javascripts/bookbinder.js +130 -0
  84. data/master_middleman/source/layouts/_additional-scripts.erb +0 -0
  85. data/master_middleman/source/layouts/_book-footer.erb +0 -0
  86. data/master_middleman/source/layouts/_book-search.erb +0 -0
  87. data/master_middleman/source/layouts/_book-title.erb +3 -0
  88. data/master_middleman/source/layouts/_header.erb +34 -0
  89. data/master_middleman/source/layouts/_local-header.erb +0 -0
  90. data/master_middleman/source/layouts/_page-footer.erb +1 -0
  91. data/master_middleman/source/layouts/_title.erb +5 -0
  92. data/master_middleman/source/layouts/layout.erb +70 -0
  93. data/master_middleman/source/stylesheets/all.css.scss +3 -0
  94. data/master_middleman/source/stylesheets/base.scss +324 -0
  95. data/master_middleman/source/stylesheets/book-styles.scss +0 -0
  96. data/master_middleman/source/stylesheets/layout-styles.scss +0 -0
  97. data/master_middleman/source/stylesheets/partials/_book-base-values.scss +0 -0
  98. data/master_middleman/source/stylesheets/partials/_book-vars.scss +0 -0
  99. data/master_middleman/source/stylesheets/partials/_default.scss +302 -0
  100. data/master_middleman/source/stylesheets/partials/_footer.scss +64 -0
  101. data/master_middleman/source/stylesheets/partials/_header.scss +419 -0
  102. data/master_middleman/source/stylesheets/partials/_layout-vars.scss +0 -0
  103. data/master_middleman/source/stylesheets/partials/_mixins.scss +53 -0
  104. data/master_middleman/source/stylesheets/partials/_reset.scss +233 -0
  105. data/master_middleman/source/stylesheets/partials/_search.scss +78 -0
  106. data/master_middleman/source/stylesheets/partials/_sidenav.scss +191 -0
  107. data/master_middleman/source/stylesheets/partials/_syntax-highlight.scss +64 -0
  108. data/master_middleman/source/stylesheets/partials/_vars.scss +64 -0
  109. data/master_middleman/source/stylesheets/print-book-styles.scss +0 -0
  110. data/master_middleman/source/stylesheets/print-layout-styles.scss +0 -0
  111. data/master_middleman/source/stylesheets/print.css.scss +57 -0
  112. data/master_middleman/source/subnavs/_default.erb +0 -0
  113. data/master_middleman/source/subnavs/_nav-links.erb +10 -0
  114. data/master_middleman/source/subnavs/_subnav_template.erb +8 -0
  115. data/master_middleman/subdirectory_aware_assets.rb +36 -0
  116. data/template_app/Gemfile +11 -0
  117. data/template_app/Gemfile.lock +55 -0
  118. data/template_app/config.ru +9 -0
  119. data/template_app/lib/rack_static_if_exists.rb +19 -0
  120. data/template_app/lib/search/handler.rb +73 -0
  121. data/template_app/lib/search/hit.rb +21 -0
  122. data/template_app/lib/search/query.rb +74 -0
  123. data/template_app/lib/search/renderer.rb +30 -0
  124. data/template_app/lib/server.rb +52 -0
  125. data/template_app/mail_sender.rb +61 -0
  126. data/template_app/rack_app.rb +110 -0
  127. data/template_app/search-results.html.erb +81 -0
  128. data/template_app/search.yml +23 -0
  129. metadata +548 -0
@@ -0,0 +1,74 @@
1
+ require 'yaml'
2
+
3
+ require_relative 'hit'
4
+
5
+ module Bookbinder
6
+ module Search
7
+ class Query
8
+ attr_reader :search_term, :product_name, :product_version, :page_number, :result_list, :result_count, :last_page, :page_window
9
+
10
+ def initialize(params)
11
+ @search_term = params.fetch('q', '')
12
+ @product_name = params.fetch('product_name', nil)
13
+ @product_version = @product_name && params.fetch('product_version', nil)
14
+ @page_number = @search_term == '' ? 1 : [params['page'].to_i, 1].max
15
+ end
16
+
17
+ def query_options
18
+ options = YAML.load_file(File.expand_path('../../../search.yml', __FILE__))
19
+
20
+ options['from'] = (page_number - 1) * 10
21
+ options['query']['bool']['must']['simple_query_string']['query'] = search_term
22
+
23
+ unless product_name.nil?
24
+ filters = [{
25
+ 'term' => { 'product_name' => product_name }
26
+ }]
27
+
28
+ unless product_version.nil?
29
+ filters << {'term' => { 'product_version' => product_version }}
30
+ end
31
+
32
+ options['query']['bool']['filter'] = {
33
+ 'bool' => {
34
+ 'must' => filters
35
+ }
36
+ }
37
+ end
38
+
39
+ options
40
+ end
41
+
42
+ def get_results(elasticsearch_client)
43
+ if search_term == ''
44
+ @result_count = 0
45
+ @result_list = []
46
+ @last_page = 1
47
+ else
48
+ results = elasticsearch_client.search index: 'searching', body: query_options
49
+ @result_count = results['hits']['total']
50
+ @result_list = results['hits']['hits'].map { |h| Hit.new(h) }
51
+ @last_page = (result_count / 10.0).ceil
52
+ end
53
+ @page_window = calculate_page_window
54
+ end
55
+
56
+ private
57
+
58
+ def calculate_page_window
59
+ window_start = [page_number - 2, 1].max
60
+ window_end = [window_start + 4, last_page].min
61
+ window = (window_start .. window_end).to_a
62
+
63
+ if window.length < 5 && window.last == last_page && window.first != 1
64
+ window.unshift(window.first - 1)
65
+ if window.length < 5
66
+ window.unshift(window.first - 1)
67
+ end
68
+ end
69
+
70
+ window
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,30 @@
1
+ require 'erb'
2
+ require 'rack/utils'
3
+
4
+ module Bookbinder
5
+ module Search
6
+ class Renderer
7
+ def initialize
8
+ @template = ERB.new(File.read(File.expand_path('../../../search-results.html.erb', __FILE__)))
9
+ end
10
+
11
+ def render_results(result)
12
+ result_binding = result.instance_eval { binding }
13
+
14
+ render_layout do
15
+ @template.result(result_binding)
16
+ end
17
+ end
18
+
19
+ private
20
+
21
+ def render_layout
22
+ layout.result(binding)
23
+ end
24
+
25
+ def layout
26
+ @layout ||= ERB.new(File.read(File.expand_path('../../../public/search.html', __FILE__)))
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,52 @@
1
+ require_relative './rack_static_if_exists'
2
+
3
+ module Bookbinder
4
+ class Server
5
+ class << self
6
+ def call(env)
7
+ Bookbinder::Server.new.call(env)
8
+ end
9
+ end
10
+
11
+ def initialize
12
+ @app = Rack::Builder.new do
13
+ use RackStaticIfExists, {
14
+ urls: [''],
15
+ root: 'public',
16
+ index: 'index.html',
17
+ header_rules: [[:all, {
18
+ 'Cache-Control' => 'public, max-age=3600',
19
+ 'Access-Control-Allow-Origin' => '*'
20
+ }]]
21
+ }
22
+ run Bookbinder::NotFound.new("public/404.html")
23
+ end
24
+ end
25
+
26
+ def call(env)
27
+ if env['PATH_INFO'] == '' || env['PATH_INFO'] =~ MATCH || (env['PATH_INFO'] !~ /\/$/ && File.directory?(File.join('public', env['PATH_INFO'])))
28
+ env['PATH_INFO'] += '/'
29
+ [301, {'Location' => Rack::Request.new(env).url, 'Content-Type' => ''}, []]
30
+ else
31
+ @app.call(env)
32
+ end
33
+ end
34
+
35
+ private
36
+ # regexp to match strings without periods that start but don't end with a slash
37
+ MATCH = %r{^/([^.]+)[^/]$}
38
+ end
39
+
40
+ class NotFound
41
+ def initialize(path = '')
42
+ @path = path
43
+ end
44
+
45
+ def call(env)
46
+ content = File.exist?(@path) ? File.read(@path) : 'Not Found'
47
+ length = content.length.to_s
48
+
49
+ [404, {'Content-Type' => 'text/html', 'Content-Length' => length}, [content]]
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,61 @@
1
+ require 'sendgrid-ruby'
2
+ require 'rack/response'
3
+ require 'uri'
4
+
5
+ module Bookbinder
6
+ class MailSender
7
+ def initialize(username, api_key, config={})
8
+ @config = config
9
+ @client = SendGrid::Client.new(api_user: username, api_key: api_key, raise_exceptions: false)
10
+ end
11
+
12
+ def send_mail(params)
13
+ params = whitelisted_params(params)
14
+ @subject = assemble_subject(params[:page_url])
15
+ @body = assemble_body(**params)
16
+ @mail = SendGrid::Mail.new(merged_options)
17
+
18
+ response = client.send(@mail)
19
+ Rack::Response.new(response.body, response.code, response.headers)
20
+ end
21
+
22
+ def assemble_subject(page_url)
23
+ "[Feedback] New feedback submitted for #{URI.parse(page_url).host}"
24
+ end
25
+
26
+ def assemble_body(helpful: nil, comments: nil, date: nil, page_url: nil)
27
+ <<-EOT
28
+ Date: #{date}
29
+
30
+ Page URL: #{page_url}
31
+
32
+ Helpful: #{helpful}
33
+
34
+ Comments:
35
+ #{comments}
36
+
37
+ EOT
38
+ end
39
+
40
+ private
41
+
42
+ attr_reader :config, :client
43
+
44
+ def whitelist
45
+ %w{helpful comments date page_url}
46
+ end
47
+
48
+ def whitelisted_params(params)
49
+ {}.tap do |hash|
50
+ params.each do |key, value|
51
+ hash[key.to_sym] = value if whitelist.include?(key)
52
+ end
53
+ end
54
+ end
55
+
56
+ def merged_options
57
+ config.merge({text: @body, subject: @subject})
58
+ end
59
+
60
+ end
61
+ end
@@ -0,0 +1,110 @@
1
+ require 'rack'
2
+ require 'rack/rewrite'
3
+ require_relative './lib/server'
4
+ require_relative './lib/search/handler'
5
+
6
+ module Bookbinder
7
+ class RackApp
8
+ def initialize(redirect_pathname, mail_client=nil, auth_required: true)
9
+ @redirect_pathname = redirect_pathname
10
+ @mail_client = mail_client
11
+ @auth_required = auth_required
12
+ end
13
+
14
+ def app
15
+ path = redirect_pathname
16
+ client = mail_client
17
+ auth = auth_required
18
+ Rack::Builder.new do
19
+ use ResolveRedirects, path
20
+ use AuthorizeUser, auth
21
+ use Rack::Deflater
22
+ map '/api/feedback' do
23
+ use MailFeedback, client
24
+ run Bookbinder::NotFound.new('public/404.html')
25
+ end
26
+ map '/search' do
27
+ run Bookbinder::Search::Handler.new
28
+ end
29
+ run Bookbinder::Server
30
+ end
31
+ end
32
+
33
+ private
34
+
35
+ attr_reader :redirect_pathname, :mail_client, :auth_required
36
+ end
37
+
38
+ class ResolveRedirects
39
+ def initialize(app, redirect_pathname)
40
+ @app = app
41
+ @redirect_pathname = redirect_pathname
42
+ end
43
+
44
+ def rack_app
45
+ if redirect_pathname.exist?
46
+ p = redirect_pathname
47
+ Rack::Rewrite.new(@app) { eval(p.read) }
48
+ else
49
+ @app
50
+ end
51
+ end
52
+
53
+ def call(env)
54
+ rack_app.call(env)
55
+ end
56
+
57
+ private
58
+
59
+ attr_reader :redirect_pathname
60
+ end
61
+
62
+ class AuthorizeUser
63
+ def initialize(app, auth_required)
64
+ @app = app
65
+ @auth_required = auth_required
66
+ end
67
+
68
+ def rack_app
69
+ if auth_required && site_username && site_password
70
+ Rack::Auth::Basic.new(@app) do |username, password|
71
+ [username, password] == [site_username, site_password]
72
+ end
73
+ else
74
+ @app
75
+ end
76
+ end
77
+
78
+ def call(env)
79
+ rack_app.call(env)
80
+ end
81
+
82
+ private
83
+
84
+ attr_accessor :auth_required
85
+
86
+ def site_username
87
+ ENV['SITE_AUTH_USERNAME']
88
+ end
89
+
90
+ def site_password
91
+ ENV['SITE_AUTH_PASSWORD']
92
+ end
93
+ end
94
+
95
+ class MailFeedback
96
+ def initialize(app, client)
97
+ @app = app
98
+ @client = client
99
+ end
100
+
101
+ def call(env)
102
+ request = Rack::Request.new(env)
103
+ if request.post? && @client
104
+ @client.send_mail(request.params)
105
+ else
106
+ @app.call(env)
107
+ end
108
+ end
109
+ end
110
+ end
@@ -0,0 +1,81 @@
1
+ <%
2
+ require 'rack'
3
+ require 'uri'
4
+ def escape_html(str)
5
+ Rack::Utils.escape_html(str)
6
+ end
7
+
8
+ def uri_escape(str)
9
+ URI.escape(str, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
10
+ end
11
+ %>
12
+
13
+ <div class="search-results">
14
+ <form method="get">
15
+
16
+ <% unless product_name.nil? %>
17
+ <h4 style="border: 1px solid #ccc; padding: 4px 20px;">
18
+ Filtering by: <%= escape_html product_name %>
19
+ <% unless product_version.nil? %>and <%= escape_html product_version %>
20
+ <% end %>
21
+ </h4>
22
+ <% end %>
23
+ <input name="q" value="<%= escape_html search_term %>"/>
24
+ <% unless product_name.nil? %>
25
+ <input type="hidden" name="product_name" value="<%= escape_html product_name %>"/>
26
+ <% end %>
27
+ <% unless product_version.nil? %>
28
+ <input type="hidden" name="product_version" value="<%= escape_html product_version %>"/>
29
+ <% end %>
30
+ </form>
31
+
32
+ <% if result_count == 0 %>
33
+ <div class="no-results">No Results</div>
34
+ <% else %>
35
+ <div class="result-summary">
36
+ Showing <%= (page_number - 1) * 10 + 1 %> to <%= [(page_number - 1) * 10 + 10, result_count].min %> of <%= result_count %> results.
37
+ </div>
38
+
39
+ <ul class="search-results-list">
40
+ <% result_list.each do |hit| %>
41
+ <li>
42
+ <a href="<%= hit.url %>"><%= hit.title %></a>
43
+ <% if hit.product_name %>
44
+ <br/>
45
+ <b><%= hit.product_name %> <%= hit.product_version %></b>
46
+ <% end %>
47
+ <div><%= hit.text %></div>
48
+ </li>
49
+ <% end %>
50
+ </ul>
51
+
52
+ <div class="pagination">
53
+ <% search_query = "/search?q=#{ uri_escape search_term }" %>
54
+ <% search_query << "&product_name=#{ uri_escape product_name }" unless product_name.nil? %>
55
+ <% search_query << "&product_version=#{ uri_escape product_version }" unless product_version.nil? %>
56
+ <% if page_number == 1 %>
57
+ <span class="disabled page first">First</span>
58
+ <span class="disabled page previous">Prev</span>
59
+ <% else %>
60
+ <a class="page first" href="<%= search_query %>">First</a>
61
+ <a class="page previous" href="<%= search_query %>&page=<%= page_number - 1 %>">Prev</a>
62
+ <% end %>
63
+
64
+ <% page_window.each do |page| %>
65
+ <% if page == page_number %>
66
+ <span class="current page"><%= page %></span>
67
+ <% else %>
68
+ <a class="page" href="<%= search_query %>&page=<%= page %>"><%= page %></a>
69
+ <% end %>
70
+ <% end %>
71
+
72
+ <% if page_number == last_page %>
73
+ <span class="disabled page next">Next</span>
74
+ <span class="disabled page last">Last</span>
75
+ <% else %>
76
+ <a class="page next" href="<%= search_query %>&page=<%= page_number + 1 %>">Next</a>
77
+ <a class="page last" href="<%= search_query %>&page=<%= last_page %>">Last</a>
78
+ <% end %>
79
+ </div>
80
+ <% end %>
81
+ </div>
@@ -0,0 +1,23 @@
1
+ ---
2
+ query:
3
+ bool:
4
+ must:
5
+ simple_query_string:
6
+ query: ''
7
+ fields:
8
+ - text
9
+ - title^20
10
+ - h2^10
11
+ - h3^10
12
+ from: 0
13
+ size: 10
14
+ _source:
15
+ - url
16
+ - title
17
+ - summary
18
+ - product_name
19
+ - product_version
20
+ highlight:
21
+ fields:
22
+ text:
23
+ type: plain
metadata ADDED
@@ -0,0 +1,548 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alb-test
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - ''
8
+ autorequire:
9
+ bindir: install_bin
10
+ cert_chain: []
11
+ date: 2021-03-26 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: fog-aws
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 0.7.1
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 0.7.1
27
+ - !ruby/object:Gem::Dependency
28
+ name: ansi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.4'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.4'
41
+ - !ruby/object:Gem::Dependency
42
+ name: middleman
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '='
46
+ - !ruby/object:Gem::Version
47
+ version: 4.1.10
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '='
53
+ - !ruby/object:Gem::Version
54
+ version: 4.1.10
55
+ - !ruby/object:Gem::Dependency
56
+ name: middleman-livereload
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: middleman-syntax
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - '='
74
+ - !ruby/object:Gem::Version
75
+ version: 2.1.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - '='
81
+ - !ruby/object:Gem::Version
82
+ version: 2.1.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: rouge
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "!="
88
+ - !ruby/object:Gem::Version
89
+ version: 1.9.1
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "!="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.9.1
97
+ - !ruby/object:Gem::Dependency
98
+ name: redcarpet
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: 3.2.3
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: 3.2.3
111
+ - !ruby/object:Gem::Dependency
112
+ name: css_parser
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: puma
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rack-rewrite
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
153
+ - !ruby/object:Gem::Dependency
154
+ name: therubyracer
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ">="
158
+ - !ruby/object:Gem::Version
159
+ version: '0'
160
+ type: :runtime
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ - !ruby/object:Gem::Dependency
168
+ name: git
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: 1.2.8
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - "~>"
179
+ - !ruby/object:Gem::Version
180
+ version: 1.2.8
181
+ - !ruby/object:Gem::Dependency
182
+ name: nokogiri
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - '='
186
+ - !ruby/object:Gem::Version
187
+ version: 1.10.1
188
+ type: :runtime
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - '='
193
+ - !ruby/object:Gem::Version
194
+ version: 1.10.1
195
+ - !ruby/object:Gem::Dependency
196
+ name: thor
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - '='
200
+ - !ruby/object:Gem::Version
201
+ version: 0.19.1
202
+ type: :runtime
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - '='
207
+ - !ruby/object:Gem::Version
208
+ version: 0.19.1
209
+ - !ruby/object:Gem::Dependency
210
+ name: elasticsearch
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - ">="
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :runtime
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - ">="
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: font-awesome-sass
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - '='
228
+ - !ruby/object:Gem::Version
229
+ version: 4.7.0
230
+ type: :runtime
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - '='
235
+ - !ruby/object:Gem::Version
236
+ version: 4.7.0
237
+ - !ruby/object:Gem::Dependency
238
+ name: middleman-sprockets
239
+ requirement: !ruby/object:Gem::Requirement
240
+ requirements:
241
+ - - ">="
242
+ - !ruby/object:Gem::Version
243
+ version: '0'
244
+ type: :runtime
245
+ prerelease: false
246
+ version_requirements: !ruby/object:Gem::Requirement
247
+ requirements:
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: '0'
251
+ - !ruby/object:Gem::Dependency
252
+ name: middleman-compass
253
+ requirement: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - ">="
256
+ - !ruby/object:Gem::Version
257
+ version: '0'
258
+ type: :runtime
259
+ prerelease: false
260
+ version_requirements: !ruby/object:Gem::Requirement
261
+ requirements:
262
+ - - ">="
263
+ - !ruby/object:Gem::Version
264
+ version: '0'
265
+ - !ruby/object:Gem::Dependency
266
+ name: sprockets
267
+ requirement: !ruby/object:Gem::Requirement
268
+ requirements:
269
+ - - '='
270
+ - !ruby/object:Gem::Version
271
+ version: 3.7.2
272
+ type: :runtime
273
+ prerelease: false
274
+ version_requirements: !ruby/object:Gem::Requirement
275
+ requirements:
276
+ - - '='
277
+ - !ruby/object:Gem::Version
278
+ version: 3.7.2
279
+ - !ruby/object:Gem::Dependency
280
+ name: license_finder
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - ">="
284
+ - !ruby/object:Gem::Version
285
+ version: '0'
286
+ type: :development
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - ">="
291
+ - !ruby/object:Gem::Version
292
+ version: '0'
293
+ - !ruby/object:Gem::Dependency
294
+ name: pry-byebug
295
+ requirement: !ruby/object:Gem::Requirement
296
+ requirements:
297
+ - - ">="
298
+ - !ruby/object:Gem::Version
299
+ version: '0'
300
+ type: :development
301
+ prerelease: false
302
+ version_requirements: !ruby/object:Gem::Requirement
303
+ requirements:
304
+ - - ">="
305
+ - !ruby/object:Gem::Version
306
+ version: '0'
307
+ - !ruby/object:Gem::Dependency
308
+ name: rake
309
+ requirement: !ruby/object:Gem::Requirement
310
+ requirements:
311
+ - - ">="
312
+ - !ruby/object:Gem::Version
313
+ version: '0'
314
+ type: :development
315
+ prerelease: false
316
+ version_requirements: !ruby/object:Gem::Requirement
317
+ requirements:
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: '0'
321
+ - !ruby/object:Gem::Dependency
322
+ name: rspec
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - ">="
326
+ - !ruby/object:Gem::Version
327
+ version: '0'
328
+ type: :development
329
+ prerelease: false
330
+ version_requirements: !ruby/object:Gem::Requirement
331
+ requirements:
332
+ - - ">="
333
+ - !ruby/object:Gem::Version
334
+ version: '0'
335
+ - !ruby/object:Gem::Dependency
336
+ name: sendgrid-ruby
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - "<"
340
+ - !ruby/object:Gem::Version
341
+ version: '3.0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - "<"
347
+ - !ruby/object:Gem::Version
348
+ version: '3.0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: sinatra
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - '='
354
+ - !ruby/object:Gem::Version
355
+ version: 1.4.8
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - '='
361
+ - !ruby/object:Gem::Version
362
+ version: 1.4.8
363
+ - !ruby/object:Gem::Dependency
364
+ name: jasmine
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - ">="
368
+ - !ruby/object:Gem::Version
369
+ version: '0'
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - ">="
375
+ - !ruby/object:Gem::Version
376
+ version: '0'
377
+ - !ruby/object:Gem::Dependency
378
+ name: rack-test
379
+ requirement: !ruby/object:Gem::Requirement
380
+ requirements:
381
+ - - ">="
382
+ - !ruby/object:Gem::Version
383
+ version: '0'
384
+ type: :development
385
+ prerelease: false
386
+ version_requirements: !ruby/object:Gem::Requirement
387
+ requirements:
388
+ - - ">="
389
+ - !ruby/object:Gem::Version
390
+ version: '0'
391
+ description: ''
392
+ email: ''
393
+ executables:
394
+ - bookbinder
395
+ extensions: []
396
+ extra_rdoc_files: []
397
+ files:
398
+ - bookbinder.gemspec
399
+ - install_bin/bookbinder
400
+ - lib/bookbinder/cli.rb
401
+ - lib/bookbinder/code_example_reader.rb
402
+ - lib/bookbinder/colorizer.rb
403
+ - lib/bookbinder/commands/bind.rb
404
+ - lib/bookbinder/commands/collection.rb
405
+ - lib/bookbinder/commands/components/bind/directory_preparer.rb
406
+ - lib/bookbinder/commands/components/bind/layout_preparer.rb
407
+ - lib/bookbinder/commands/components/command_options.rb
408
+ - lib/bookbinder/commands/components/imprint/directory_preparer.rb
409
+ - lib/bookbinder/commands/generate.rb
410
+ - lib/bookbinder/commands/imprint.rb
411
+ - lib/bookbinder/commands/punch.rb
412
+ - lib/bookbinder/commands/update_local_doc_repos.rb
413
+ - lib/bookbinder/commands/watch.rb
414
+ - lib/bookbinder/config/checkers/archive_menu_checker.rb
415
+ - lib/bookbinder/config/checkers/ditamap_presence_checker.rb
416
+ - lib/bookbinder/config/checkers/duplicate_section_name_checker.rb
417
+ - lib/bookbinder/config/checkers/products_checker.rb
418
+ - lib/bookbinder/config/checkers/repository_name_presence_checker.rb
419
+ - lib/bookbinder/config/checkers/required_keys_checker.rb
420
+ - lib/bookbinder/config/checkers/section_presence_checker.rb
421
+ - lib/bookbinder/config/configuration.rb
422
+ - lib/bookbinder/config/configuration_decorator.rb
423
+ - lib/bookbinder/config/dita_config_generator.rb
424
+ - lib/bookbinder/config/fetcher.rb
425
+ - lib/bookbinder/config/imprint/configuration.rb
426
+ - lib/bookbinder/config/product_config.rb
427
+ - lib/bookbinder/config/section_config.rb
428
+ - lib/bookbinder/config/validator.rb
429
+ - lib/bookbinder/config/yaml_loader.rb
430
+ - lib/bookbinder/css_link_checker.rb
431
+ - lib/bookbinder/directory_helpers.rb
432
+ - lib/bookbinder/dita_command_creator.rb
433
+ - lib/bookbinder/dita_html_for_middleman_formatter.rb
434
+ - lib/bookbinder/errors/programmer_mistake.rb
435
+ - lib/bookbinder/html_document_manipulator.rb
436
+ - lib/bookbinder/ingest/cloner_factory.rb
437
+ - lib/bookbinder/ingest/destination_directory.rb
438
+ - lib/bookbinder/ingest/git_accessor.rb
439
+ - lib/bookbinder/ingest/git_cloner.rb
440
+ - lib/bookbinder/ingest/local_filesystem_cloner.rb
441
+ - lib/bookbinder/ingest/missing_working_copy.rb
442
+ - lib/bookbinder/ingest/repo_identifier.rb
443
+ - lib/bookbinder/ingest/section_repository.rb
444
+ - lib/bookbinder/ingest/update_failure.rb
445
+ - lib/bookbinder/ingest/update_success.rb
446
+ - lib/bookbinder/ingest/working_copy.rb
447
+ - lib/bookbinder/local_filesystem_accessor.rb
448
+ - lib/bookbinder/middleman_runner.rb
449
+ - lib/bookbinder/postprocessing/link_checker.rb
450
+ - lib/bookbinder/postprocessing/redirection.rb
451
+ - lib/bookbinder/preprocessing/dita_html_preprocessor.rb
452
+ - lib/bookbinder/preprocessing/dita_pdf_preprocessor.rb
453
+ - lib/bookbinder/preprocessing/link_to_site_gen_dir.rb
454
+ - lib/bookbinder/preprocessing/preprocessor.rb
455
+ - lib/bookbinder/server_director.rb
456
+ - lib/bookbinder/sheller.rb
457
+ - lib/bookbinder/streams/colorized_stream.rb
458
+ - lib/bookbinder/streams/filter_stream.rb
459
+ - lib/bookbinder/subnav/navigation_entries_from_html_toc.rb
460
+ - lib/bookbinder/subnav/navigation_entries_from_markdown_root.rb
461
+ - lib/bookbinder/subnav/pdf_config_creator.rb
462
+ - lib/bookbinder/subnav/subnav_generator.rb
463
+ - lib/bookbinder/subnav/subnav_generator_factory.rb
464
+ - lib/bookbinder/subnav/template_creator.rb
465
+ - lib/bookbinder/terminal.rb
466
+ - lib/bookbinder/values/output_locations.rb
467
+ - lib/bookbinder/values/product_info.rb
468
+ - lib/bookbinder/values/section.rb
469
+ - lib/bookbinder/values/subnav_template.rb
470
+ - lib/bookbinder/values/user_message.rb
471
+ - master_middleman/archive_drop_down_menu.rb
472
+ - master_middleman/bookbinder_helpers.rb
473
+ - master_middleman/compass_runner.rb
474
+ - master_middleman/config.rb
475
+ - master_middleman/proof.rb
476
+ - master_middleman/quicklinks_renderer.rb
477
+ - master_middleman/source/javascripts/all.js
478
+ - master_middleman/source/javascripts/book.js
479
+ - master_middleman/source/javascripts/bookbinder.js
480
+ - master_middleman/source/layouts/_additional-scripts.erb
481
+ - master_middleman/source/layouts/_book-footer.erb
482
+ - master_middleman/source/layouts/_book-search.erb
483
+ - master_middleman/source/layouts/_book-title.erb
484
+ - master_middleman/source/layouts/_header.erb
485
+ - master_middleman/source/layouts/_local-header.erb
486
+ - master_middleman/source/layouts/_page-footer.erb
487
+ - master_middleman/source/layouts/_title.erb
488
+ - master_middleman/source/layouts/layout.erb
489
+ - master_middleman/source/stylesheets/all.css.scss
490
+ - master_middleman/source/stylesheets/base.scss
491
+ - master_middleman/source/stylesheets/book-styles.scss
492
+ - master_middleman/source/stylesheets/layout-styles.scss
493
+ - master_middleman/source/stylesheets/partials/_book-base-values.scss
494
+ - master_middleman/source/stylesheets/partials/_book-vars.scss
495
+ - master_middleman/source/stylesheets/partials/_default.scss
496
+ - master_middleman/source/stylesheets/partials/_footer.scss
497
+ - master_middleman/source/stylesheets/partials/_header.scss
498
+ - master_middleman/source/stylesheets/partials/_layout-vars.scss
499
+ - master_middleman/source/stylesheets/partials/_mixins.scss
500
+ - master_middleman/source/stylesheets/partials/_reset.scss
501
+ - master_middleman/source/stylesheets/partials/_search.scss
502
+ - master_middleman/source/stylesheets/partials/_sidenav.scss
503
+ - master_middleman/source/stylesheets/partials/_syntax-highlight.scss
504
+ - master_middleman/source/stylesheets/partials/_vars.scss
505
+ - master_middleman/source/stylesheets/print-book-styles.scss
506
+ - master_middleman/source/stylesheets/print-layout-styles.scss
507
+ - master_middleman/source/stylesheets/print.css.scss
508
+ - master_middleman/source/subnavs/_default.erb
509
+ - master_middleman/source/subnavs/_nav-links.erb
510
+ - master_middleman/source/subnavs/_subnav_template.erb
511
+ - master_middleman/subdirectory_aware_assets.rb
512
+ - template_app/Gemfile
513
+ - template_app/Gemfile.lock
514
+ - template_app/config.ru
515
+ - template_app/lib/rack_static_if_exists.rb
516
+ - template_app/lib/search/handler.rb
517
+ - template_app/lib/search/hit.rb
518
+ - template_app/lib/search/query.rb
519
+ - template_app/lib/search/renderer.rb
520
+ - template_app/lib/server.rb
521
+ - template_app/mail_sender.rb
522
+ - template_app/rack_app.rb
523
+ - template_app/search-results.html.erb
524
+ - template_app/search.yml
525
+ homepage: ''
526
+ licenses:
527
+ - MIT
528
+ metadata: {}
529
+ post_install_message:
530
+ rdoc_options: []
531
+ require_paths:
532
+ - lib
533
+ required_ruby_version: !ruby/object:Gem::Requirement
534
+ requirements:
535
+ - - ">="
536
+ - !ruby/object:Gem::Version
537
+ version: 2.3.3
538
+ required_rubygems_version: !ruby/object:Gem::Requirement
539
+ requirements:
540
+ - - ">="
541
+ - !ruby/object:Gem::Version
542
+ version: '0'
543
+ requirements: []
544
+ rubygems_version: 3.0.8
545
+ signing_key:
546
+ specification_version: 4
547
+ summary: ''
548
+ test_files: []