alb3rtobr-test 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
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: []