alb3rtobr-test 1.0.1

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 +43 -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 +10 -0
  117. data/template_app/Gemfile.lock +46 -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 +562 -0
@@ -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,562 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: alb3rtobr-test
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - test
8
+ autorequire:
9
+ bindir: install_bin
10
+ cert_chain: []
11
+ date: 2021-03-25 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: mimemagic
281
+ requirement: !ruby/object:Gem::Requirement
282
+ requirements:
283
+ - - '='
284
+ - !ruby/object:Gem::Version
285
+ version: 0.4.1
286
+ type: :runtime
287
+ prerelease: false
288
+ version_requirements: !ruby/object:Gem::Requirement
289
+ requirements:
290
+ - - '='
291
+ - !ruby/object:Gem::Version
292
+ version: 0.4.1
293
+ - !ruby/object:Gem::Dependency
294
+ name: license_finder
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: pry-byebug
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: rake
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: rspec
337
+ requirement: !ruby/object:Gem::Requirement
338
+ requirements:
339
+ - - ">="
340
+ - !ruby/object:Gem::Version
341
+ version: '0'
342
+ type: :development
343
+ prerelease: false
344
+ version_requirements: !ruby/object:Gem::Requirement
345
+ requirements:
346
+ - - ">="
347
+ - !ruby/object:Gem::Version
348
+ version: '0'
349
+ - !ruby/object:Gem::Dependency
350
+ name: sendgrid-ruby
351
+ requirement: !ruby/object:Gem::Requirement
352
+ requirements:
353
+ - - "<"
354
+ - !ruby/object:Gem::Version
355
+ version: '3.0'
356
+ type: :development
357
+ prerelease: false
358
+ version_requirements: !ruby/object:Gem::Requirement
359
+ requirements:
360
+ - - "<"
361
+ - !ruby/object:Gem::Version
362
+ version: '3.0'
363
+ - !ruby/object:Gem::Dependency
364
+ name: sinatra
365
+ requirement: !ruby/object:Gem::Requirement
366
+ requirements:
367
+ - - '='
368
+ - !ruby/object:Gem::Version
369
+ version: 1.4.8
370
+ type: :development
371
+ prerelease: false
372
+ version_requirements: !ruby/object:Gem::Requirement
373
+ requirements:
374
+ - - '='
375
+ - !ruby/object:Gem::Version
376
+ version: 1.4.8
377
+ - !ruby/object:Gem::Dependency
378
+ name: jasmine
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
+ - !ruby/object:Gem::Dependency
392
+ name: rack-test
393
+ requirement: !ruby/object:Gem::Requirement
394
+ requirements:
395
+ - - ">="
396
+ - !ruby/object:Gem::Version
397
+ version: '0'
398
+ type: :development
399
+ prerelease: false
400
+ version_requirements: !ruby/object:Gem::Requirement
401
+ requirements:
402
+ - - ">="
403
+ - !ruby/object:Gem::Version
404
+ version: '0'
405
+ description:
406
+ email:
407
+ executables:
408
+ - bookbinder
409
+ extensions: []
410
+ extra_rdoc_files: []
411
+ files:
412
+ - bookbinder.gemspec
413
+ - install_bin/bookbinder
414
+ - lib/bookbinder/cli.rb
415
+ - lib/bookbinder/code_example_reader.rb
416
+ - lib/bookbinder/colorizer.rb
417
+ - lib/bookbinder/commands/bind.rb
418
+ - lib/bookbinder/commands/collection.rb
419
+ - lib/bookbinder/commands/components/bind/directory_preparer.rb
420
+ - lib/bookbinder/commands/components/bind/layout_preparer.rb
421
+ - lib/bookbinder/commands/components/command_options.rb
422
+ - lib/bookbinder/commands/components/imprint/directory_preparer.rb
423
+ - lib/bookbinder/commands/generate.rb
424
+ - lib/bookbinder/commands/imprint.rb
425
+ - lib/bookbinder/commands/punch.rb
426
+ - lib/bookbinder/commands/update_local_doc_repos.rb
427
+ - lib/bookbinder/commands/watch.rb
428
+ - lib/bookbinder/config/checkers/archive_menu_checker.rb
429
+ - lib/bookbinder/config/checkers/ditamap_presence_checker.rb
430
+ - lib/bookbinder/config/checkers/duplicate_section_name_checker.rb
431
+ - lib/bookbinder/config/checkers/products_checker.rb
432
+ - lib/bookbinder/config/checkers/repository_name_presence_checker.rb
433
+ - lib/bookbinder/config/checkers/required_keys_checker.rb
434
+ - lib/bookbinder/config/checkers/section_presence_checker.rb
435
+ - lib/bookbinder/config/configuration.rb
436
+ - lib/bookbinder/config/configuration_decorator.rb
437
+ - lib/bookbinder/config/dita_config_generator.rb
438
+ - lib/bookbinder/config/fetcher.rb
439
+ - lib/bookbinder/config/imprint/configuration.rb
440
+ - lib/bookbinder/config/product_config.rb
441
+ - lib/bookbinder/config/section_config.rb
442
+ - lib/bookbinder/config/validator.rb
443
+ - lib/bookbinder/config/yaml_loader.rb
444
+ - lib/bookbinder/css_link_checker.rb
445
+ - lib/bookbinder/directory_helpers.rb
446
+ - lib/bookbinder/dita_command_creator.rb
447
+ - lib/bookbinder/dita_html_for_middleman_formatter.rb
448
+ - lib/bookbinder/errors/programmer_mistake.rb
449
+ - lib/bookbinder/html_document_manipulator.rb
450
+ - lib/bookbinder/ingest/cloner_factory.rb
451
+ - lib/bookbinder/ingest/destination_directory.rb
452
+ - lib/bookbinder/ingest/git_accessor.rb
453
+ - lib/bookbinder/ingest/git_cloner.rb
454
+ - lib/bookbinder/ingest/local_filesystem_cloner.rb
455
+ - lib/bookbinder/ingest/missing_working_copy.rb
456
+ - lib/bookbinder/ingest/repo_identifier.rb
457
+ - lib/bookbinder/ingest/section_repository.rb
458
+ - lib/bookbinder/ingest/update_failure.rb
459
+ - lib/bookbinder/ingest/update_success.rb
460
+ - lib/bookbinder/ingest/working_copy.rb
461
+ - lib/bookbinder/local_filesystem_accessor.rb
462
+ - lib/bookbinder/middleman_runner.rb
463
+ - lib/bookbinder/postprocessing/link_checker.rb
464
+ - lib/bookbinder/postprocessing/redirection.rb
465
+ - lib/bookbinder/preprocessing/dita_html_preprocessor.rb
466
+ - lib/bookbinder/preprocessing/dita_pdf_preprocessor.rb
467
+ - lib/bookbinder/preprocessing/link_to_site_gen_dir.rb
468
+ - lib/bookbinder/preprocessing/preprocessor.rb
469
+ - lib/bookbinder/server_director.rb
470
+ - lib/bookbinder/sheller.rb
471
+ - lib/bookbinder/streams/colorized_stream.rb
472
+ - lib/bookbinder/streams/filter_stream.rb
473
+ - lib/bookbinder/subnav/navigation_entries_from_html_toc.rb
474
+ - lib/bookbinder/subnav/navigation_entries_from_markdown_root.rb
475
+ - lib/bookbinder/subnav/pdf_config_creator.rb
476
+ - lib/bookbinder/subnav/subnav_generator.rb
477
+ - lib/bookbinder/subnav/subnav_generator_factory.rb
478
+ - lib/bookbinder/subnav/template_creator.rb
479
+ - lib/bookbinder/terminal.rb
480
+ - lib/bookbinder/values/output_locations.rb
481
+ - lib/bookbinder/values/product_info.rb
482
+ - lib/bookbinder/values/section.rb
483
+ - lib/bookbinder/values/subnav_template.rb
484
+ - lib/bookbinder/values/user_message.rb
485
+ - master_middleman/archive_drop_down_menu.rb
486
+ - master_middleman/bookbinder_helpers.rb
487
+ - master_middleman/compass_runner.rb
488
+ - master_middleman/config.rb
489
+ - master_middleman/proof.rb
490
+ - master_middleman/quicklinks_renderer.rb
491
+ - master_middleman/source/javascripts/all.js
492
+ - master_middleman/source/javascripts/book.js
493
+ - master_middleman/source/javascripts/bookbinder.js
494
+ - master_middleman/source/layouts/_additional-scripts.erb
495
+ - master_middleman/source/layouts/_book-footer.erb
496
+ - master_middleman/source/layouts/_book-search.erb
497
+ - master_middleman/source/layouts/_book-title.erb
498
+ - master_middleman/source/layouts/_header.erb
499
+ - master_middleman/source/layouts/_local-header.erb
500
+ - master_middleman/source/layouts/_page-footer.erb
501
+ - master_middleman/source/layouts/_title.erb
502
+ - master_middleman/source/layouts/layout.erb
503
+ - master_middleman/source/stylesheets/all.css.scss
504
+ - master_middleman/source/stylesheets/base.scss
505
+ - master_middleman/source/stylesheets/book-styles.scss
506
+ - master_middleman/source/stylesheets/layout-styles.scss
507
+ - master_middleman/source/stylesheets/partials/_book-base-values.scss
508
+ - master_middleman/source/stylesheets/partials/_book-vars.scss
509
+ - master_middleman/source/stylesheets/partials/_default.scss
510
+ - master_middleman/source/stylesheets/partials/_footer.scss
511
+ - master_middleman/source/stylesheets/partials/_header.scss
512
+ - master_middleman/source/stylesheets/partials/_layout-vars.scss
513
+ - master_middleman/source/stylesheets/partials/_mixins.scss
514
+ - master_middleman/source/stylesheets/partials/_reset.scss
515
+ - master_middleman/source/stylesheets/partials/_search.scss
516
+ - master_middleman/source/stylesheets/partials/_sidenav.scss
517
+ - master_middleman/source/stylesheets/partials/_syntax-highlight.scss
518
+ - master_middleman/source/stylesheets/partials/_vars.scss
519
+ - master_middleman/source/stylesheets/print-book-styles.scss
520
+ - master_middleman/source/stylesheets/print-layout-styles.scss
521
+ - master_middleman/source/stylesheets/print.css.scss
522
+ - master_middleman/source/subnavs/_default.erb
523
+ - master_middleman/source/subnavs/_nav-links.erb
524
+ - master_middleman/source/subnavs/_subnav_template.erb
525
+ - master_middleman/subdirectory_aware_assets.rb
526
+ - template_app/Gemfile
527
+ - template_app/Gemfile.lock
528
+ - template_app/config.ru
529
+ - template_app/lib/rack_static_if_exists.rb
530
+ - template_app/lib/search/handler.rb
531
+ - template_app/lib/search/hit.rb
532
+ - template_app/lib/search/query.rb
533
+ - template_app/lib/search/renderer.rb
534
+ - template_app/lib/server.rb
535
+ - template_app/mail_sender.rb
536
+ - template_app/rack_app.rb
537
+ - template_app/search-results.html.erb
538
+ - template_app/search.yml
539
+ homepage:
540
+ licenses:
541
+ - MIT
542
+ metadata: {}
543
+ post_install_message:
544
+ rdoc_options: []
545
+ require_paths:
546
+ - lib
547
+ required_ruby_version: !ruby/object:Gem::Requirement
548
+ requirements:
549
+ - - ">="
550
+ - !ruby/object:Gem::Version
551
+ version: 2.3.3
552
+ required_rubygems_version: !ruby/object:Gem::Requirement
553
+ requirements:
554
+ - - ">="
555
+ - !ruby/object:Gem::Version
556
+ version: '0'
557
+ requirements: []
558
+ rubygems_version: 3.0.8
559
+ signing_key:
560
+ specification_version: 4
561
+ summary: test
562
+ test_files: []