bookbindery 9.12.1 → 10.0.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3e747c9862ad4f70c5c41b7ac8dc2fbf7b3c406a
4
- data.tar.gz: 02f25c46cd3246239cf47cfdd4d44c90e901f728
3
+ metadata.gz: 032506f1edfb3c2dc24ecb101cdeeaa5938bb297
4
+ data.tar.gz: 26e6135c21fc4fd3de5a579d64782878104e6c49
5
5
  SHA512:
6
- metadata.gz: 0c62c5638c916e8db79c197346c1bf4e8eaac89b494596899225adde8f9e9cab17bb12e0a4f1bedf6185fec80aecbb8cada14f95d47e6452e08a3f0939513729
7
- data.tar.gz: 59e72dce30390fed01a3746d9120b6a6891d1a73b46122f89fd51094ad78fcc5c25a358a376814b8d1cf6177c7072835b7ee36b8b6af7721ca7b3efd182f07b2
6
+ metadata.gz: 52a7e82139d9f4731191baed4284d28c3574ec11abf3ce00038285ceec72462ace0b179db5036bd3d68240b774e92d5d1cee68b77a3814b9ce166889844daa0d
7
+ data.tar.gz: d6616b9669f7d951efe37ca75376b9304355d7da913fa387b75874b32346a1920e9d9ad50a691bc4f8a127e66ffe3079aef9356854f67a65af1776cb58e6eada
data/bookbinder.gemspec CHANGED
@@ -2,10 +2,10 @@ require 'base64'
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = 'bookbindery'
5
- s.version = '9.12.1'
5
+ s.version = '10.0.0'
6
6
  s.summary = 'Markdown to Rackup application documentation generator'
7
7
  s.description = 'A command line utility to be run in Book repositories to stitch together their constituent Markdown repos into a static-HTML-serving application'
8
- s.authors = ['Mike Grafton', 'Lucas Marks', 'Gavin Morgan', 'Nikhil Gajwani', 'Dan Wendorf', 'Brenda Chan', 'Matthew Boedicker', 'Andrew Bruce', 'Frank Kotsianas', 'Elena Sharma', 'Christa Hartsock', 'Michael Trestman', 'Alpha Chen', 'Sarah McAlear', 'Gregg Van Hove']
8
+ s.authors = ['Mike Grafton', 'Lucas Marks', 'Gavin Morgan', 'Nikhil Gajwani', 'Dan Wendorf', 'Brenda Chan', 'Matthew Boedicker', 'Andrew Bruce', 'Frank Kotsianas', 'Elena Sharma', 'Christa Hartsock', 'Michael Trestman', 'Alpha Chen', 'Sarah McAlear', 'Gregg Van Hove', 'Jess B Heron']
9
9
  s.email = Base64.decode64('Z21vcmdhbkBnb3Bpdm90YWwuY29t') # Gavin's
10
10
 
11
11
  s.files = Dir['lib/**/*'] + Dir['template_app/**/*'] + Dir['master_middleman/**/*'] + Dir['install_bin/bookbinder'] + Dir['bookbinder.gemspec']
@@ -17,9 +17,9 @@ Gem::Specification.new do |s|
17
17
  s.required_ruby_version = '>= 2.0.0'
18
18
  s.add_runtime_dependency 'fog-aws', ['~> 0.7.1']
19
19
  s.add_runtime_dependency 'ansi', ['~> 1.4']
20
- s.add_runtime_dependency 'middleman', ['~> 3.4.0']
21
- s.add_runtime_dependency 'middleman-livereload', ['~> 3.4.3']
22
- s.add_runtime_dependency 'middleman-syntax', ['~> 2.0']
20
+ s.add_runtime_dependency 'middleman'
21
+ s.add_runtime_dependency 'middleman-livereload'
22
+ s.add_runtime_dependency 'middleman-syntax'
23
23
  s.add_runtime_dependency 'rouge', '!= 1.9.1'
24
24
  s.add_runtime_dependency 'redcarpet', ['~> 3.2.3']
25
25
  s.add_runtime_dependency 'css_parser'
@@ -31,6 +31,8 @@ Gem::Specification.new do |s|
31
31
  s.add_runtime_dependency 'thor'
32
32
  s.add_runtime_dependency 'elasticsearch'
33
33
  s.add_runtime_dependency 'font-awesome-sass'
34
+ s.add_runtime_dependency 'middleman-sprockets'
35
+ s.add_runtime_dependency 'middleman-compass'
34
36
 
35
37
  s.add_development_dependency 'license_finder'
36
38
  s.add_development_dependency 'pry-byebug'
@@ -38,4 +40,5 @@ Gem::Specification.new do |s|
38
40
  s.add_development_dependency 'rspec'
39
41
  s.add_development_dependency 'sendgrid-ruby', '< 3.0'
40
42
  s.add_development_dependency 'jasmine'
43
+ s.add_development_dependency 'rack-test'
41
44
  end
@@ -33,10 +33,11 @@ module Bookbinder
33
33
 
34
34
  desc 'bind <local|remote> [options]', 'Bind the sections specified in config.yml from <local> or <remote> into the final_app directory'
35
35
  option :verbose, type: :boolean
36
+ option :proof, type: :boolean, default: false, desc:'Shows author proof details'
36
37
  option 'dita-flags', desc: '--dita-flags=\"<dita-option>=<value>\"'
37
38
  option :require_valid_subnav_links, type: :boolean, desc: 'Check that subnav link targets exist, always true for remote'
38
39
  def bind(source)
39
- code = legacy_commands.bind(source, options[:verbose], options['dita-flags'], options[:require_valid_subnav_links])
40
+ code = legacy_commands.bind(source, options[:verbose], options['dita-flags'], options[:require_valid_subnav_links], options[:proof])
40
41
  raise Thor::Error, '' if code != 0
41
42
  end
42
43
 
@@ -77,7 +77,7 @@ module Bookbinder
77
77
  end
78
78
  }.
79
79
  map(&:first).
80
- detect(Proc.new {""}) {|text| text}
80
+ detect ->{""} {|text| text}
81
81
  end
82
82
 
83
83
  def pattern_for(marker)
@@ -30,7 +30,7 @@ module Bookbinder
30
30
  @directory_preparer = directory_preparer
31
31
  end
32
32
 
33
- def run(bind_type, verbose = false, dita_flags = nil, require_valid_subnav_links = false)
33
+ def run(bind_type, verbose = false, dita_flags = nil, require_valid_subnav_links = false, proof = false)
34
34
  bind_options = Components::CommandOptions.new([bind_type], base_streams, verbose)
35
35
  bind_config = config_fetcher.fetch_config
36
36
  cloner = cloner_factory.produce(bind_options.local_repo_dir)
@@ -70,7 +70,8 @@ module Bookbinder
70
70
  config: config_decorator.generate(bind_config, sections),
71
71
  local_repo_dir: bind_options.local_repo_dir,
72
72
  subnavs: subnavs(sections),
73
- product_info: product_infos(sections)
73
+ product_info: product_infos(sections),
74
+ proof: proof
74
75
  )
75
76
  if generation_result.success?
76
77
  file_system_accessor.copy(output_locations.build_dir, output_locations.public_dir)
@@ -71,7 +71,7 @@ gem "bookbindery"#{bookbinder_config}
71
71
  def init_index(path)
72
72
  fs.write(
73
73
  text: '# Empty book',
74
- to: path.join('master_middleman/source/index.md.erb')
74
+ to: path.join('master_middleman/source/index.html.md.erb')
75
75
  )
76
76
  end
77
77
 
@@ -103,7 +103,7 @@ module Bookbinder
103
103
  def find_files_extension_agnostically(pattern, directory='.')
104
104
  extensionless_pattern = File.join(File.dirname(pattern), File.basename(pattern).split('.').first)
105
105
 
106
- `find -L #{directory} -path '*/#{extensionless_pattern}.*' -type f`.
106
+ `find -L #{directory} -path '#{directory}/#{extensionless_pattern}.*' -type f`.
107
107
  lines.
108
108
  map(&:chomp).
109
109
  map(&Pathname.method(:new))
@@ -16,7 +16,8 @@ module Bookbinder
16
16
  config: nil,
17
17
  local_repo_dir: nil,
18
18
  subnavs: nil,
19
- product_info: nil)
19
+ product_info: nil,
20
+ proof: false)
20
21
  streams[:out].puts "\nRunning middleman...\n\n"
21
22
  Dir.chdir(output_locations.master_dir) do
22
23
  config = {
@@ -30,7 +31,8 @@ module Bookbinder
30
31
  repo_link_enabled: config.repo_link_enabled,
31
32
  repo_links: config.repo_links,
32
33
  product_info: product_info,
33
- elastic_search: config.elastic_search?
34
+ elastic_search: config.elastic_search?,
35
+ proof: proof
34
36
  }
35
37
 
36
38
  fs.write(to: "bookbinder_config.yml", text: YAML.dump(config))
@@ -12,7 +12,7 @@ module Bookbinder
12
12
 
13
13
  def preprocess(sections, *args)
14
14
  sections.group_by { |section|
15
- processes.detect(Proc.new { NullProcess.new }) { |process| process.applicable_to?(section) }
15
+ processes.detect ->{ NullProcess.new } { |process| process.applicable_to?(section) }
16
16
  }.each do |process, grouped_sections|
17
17
  process.preprocess(grouped_sections, *args)
18
18
  end
@@ -9,14 +9,14 @@ require_relative 'quicklinks_renderer'
9
9
  I18n.enforce_available_locales = false
10
10
 
11
11
  module Bookbinder
12
- module Navigation
13
- class << self
14
- def registered(app)
15
- app.helpers HelperMethods
16
- end
12
+ class Helpers < ::Middleman::Extension
13
+ # class << self
14
+ # def registered(app)
15
+ # app.helpers HelperMethods
16
+ # end
17
17
 
18
- alias :included :registered
19
- end
18
+ # alias :included :registered
19
+ # end
20
20
 
21
21
  module HelperMethods
22
22
 
@@ -107,6 +107,10 @@ module Bookbinder
107
107
  config[:product_info].fetch(template_key, {})
108
108
  end
109
109
 
110
+ def production_host
111
+ config[:production_host]
112
+ end
113
+
110
114
  def quick_links
111
115
  page_src = File.read(current_page.source_file)
112
116
  quicklinks_renderer = QuicklinksRenderer.new(vars)
@@ -139,11 +143,7 @@ module Bookbinder
139
143
  private
140
144
 
141
145
  def subnav_template_name
142
- if current_path == 'search.html'
143
- config[:subnav_templates].values.first
144
- else
145
- config[:subnav_templates][template_key] || 'default'
146
- end
146
+ config[:subnav_templates][template_key] || 'default'
147
147
  end
148
148
 
149
149
  def decreasingly_specific_namespaces
@@ -254,6 +254,9 @@ module Bookbinder
254
254
  content_tag :li, link, :class => css_class
255
255
  end
256
256
  end
257
+
258
+ helpers HelperMethods
259
+
257
260
  end
258
261
  end
259
- ::Middleman::Extensions.register(:navigation, Bookbinder::Navigation)
262
+ ::Middleman::Extensions.register(:bookbinder, Bookbinder::Helpers)
@@ -1,7 +1,11 @@
1
1
  require 'bookbinder_helpers'
2
+ require 'proof'
2
3
  require 'middleman-syntax'
3
4
  require 'middleman-livereload'
5
+ require 'middleman-sprockets'
4
6
  require 'subdirectory_aware_assets'
7
+ require 'middleman-compass'
8
+ require 'font-awesome-sass'
5
9
 
6
10
  config = YAML.load_file('bookbinder_config.yml')
7
11
  config.each do |k, v|
@@ -25,10 +29,15 @@ set :relative_links, false
25
29
 
26
30
  page '/owners.json', :layout => false
27
31
 
28
- activate :subdirectory_aware_assets
32
+ activate :bookbinder
29
33
 
30
- activate :navigation
34
+ activate :proof
31
35
 
32
36
  activate :syntax
33
37
 
34
38
  activate :livereload
39
+
40
+ activate :sprockets
41
+ import_path FontAwesome::Sass.fonts_path
42
+
43
+ activate :subdirectory_aware_assets
@@ -0,0 +1,90 @@
1
+ require 'nokogiri'
2
+
3
+ module Bookbinder
4
+ class Proof < ::Middleman::Extension
5
+ def initialize(*args)
6
+ super
7
+ @blacklist = [
8
+ %r{\Alayouts/},
9
+ %r{\Asubnavs/}
10
+ ]
11
+ end
12
+
13
+ def before_build(builder)
14
+ return unless proofing?
15
+ builder.instance_variable_set(:@parallel, false)
16
+ @partials = Hash.new { |h, k| h[k] = [] }
17
+ @pages = Hash.new { |h, k| h[k] = [] }
18
+ end
19
+
20
+ def after_build(builder)
21
+ return unless proofing?
22
+ @partials.values.each(&:uniq!)
23
+ @pages.values.each(&:uniq!)
24
+
25
+ @pages.each do |page_path, partials|
26
+ full_path = File.join(app.config.build_dir, page_path)
27
+ page = File.open(full_path) {|file| Nokogiri::HTML file}
28
+
29
+ page.css('.partial-notice').each do |node|
30
+ if node.text =~ /\ABEGIN PARTIAL (.+)\. Partial appears in these topics:\z/
31
+ partial_name = $1
32
+ all_files_using_partial = @partials[partial_name]
33
+
34
+ list = page.create_element('ul')
35
+ all_files_using_partial.each do |file_name|
36
+ li = list.add_child(page.create_element('li'))
37
+ link = li.add_child(page.create_element('a', file_name, href: "/#{file_name}"))
38
+ end
39
+
40
+ node.add_child(list)
41
+ end
42
+ end
43
+
44
+ File.open(full_path, 'w') { |file| file.puts page.to_html }
45
+ end
46
+ end
47
+
48
+ expose_to_template :proofing?
49
+ expose_to_template :track_partial
50
+
51
+ helpers do
52
+ def partial(template, *args)
53
+ contents = [super]
54
+
55
+ if proofing?
56
+ dir, name = File.split(template)
57
+ partial_template = File.join(dir, "_#{name}")
58
+ template_obj = locate_partial(partial_template, false) || locate_partial(partial_template, true)
59
+ template_path = template_obj.relative_path.to_s
60
+
61
+ if track_partial(template_path, current_resource.path)
62
+ contents.unshift %Q{<div class="partial-notice">BEGIN PARTIAL #{template_path}. Partial appears in these topics:</div>}
63
+ contents.push %Q{<div class="partial-notice">END PARTIAL #{template_path}</div>}
64
+ end
65
+ end
66
+
67
+ contents.join('')
68
+ end
69
+ end
70
+
71
+ def track_partial(template, page)
72
+ result = !blacklisted?(template)
73
+ if result
74
+ @partials[template] << page
75
+ @pages[page] << template
76
+ end
77
+ result
78
+ end
79
+
80
+ def proofing?
81
+ !!app.config[:proof]
82
+ end
83
+
84
+ def blacklisted?(template)
85
+ @blacklist.any? { |matcher| matcher.match template }
86
+ end
87
+ end
88
+ end
89
+
90
+ ::Middleman::Extensions.register(:proof, Bookbinder::Proof)
@@ -43,6 +43,17 @@
43
43
  return [MONTHS[date.getMonth()], ' ', date.getDate(), ', ', date.getFullYear()].join('');
44
44
  }
45
45
 
46
+ function maybeOpenNewWindow(e) {
47
+ var el = e.currentTarget;
48
+ var href = el.href;
49
+
50
+ if (Bookbinder.needsNewWindow(e, href, window.location.host)) {
51
+ e.preventDefault();
52
+ e.stopPropagation();
53
+ window.open(href);
54
+ }
55
+ }
56
+
46
57
  window.Bookbinder = {
47
58
  startSidenav: function(rootEl, currentPath) {
48
59
  if (!rootEl) { return; }
@@ -93,11 +104,27 @@
93
104
  datesElements[i].innerText = displayDate(datesElements[i].getAttribute('data-modified-date'));
94
105
  }
95
106
  },
107
+ externalLinks: function(root) {
108
+ var links = root.querySelectorAll('a[href]');
109
+
110
+ for (var i = 0; i < links.length; i++) {
111
+ registerOnClick(links[i], maybeOpenNewWindow);
112
+ }
113
+ },
114
+ needsNewWindow: function(e, destinationUrl, currentDomain) {
115
+ if (e.button !== 0 || e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) {
116
+ return false;
117
+ }
118
+
119
+ var destinationDomain = destinationUrl.replace(/^https?:\/\//, '').split('/')[0];
120
+ return destinationDomain !== currentDomain;
121
+ },
96
122
  boot: function() {
97
123
  Bookbinder.startSidenav(document.querySelector('#sub-nav'), document.location.pathname);
98
124
  Bookbinder.mobileMainMenu(document);
99
125
  Bookbinder.mobileSubMenu(document);
100
126
  Bookbinder.modifiedDates(document);
127
+ Bookbinder.externalLinks(document);
101
128
  }
102
129
  };
103
130
  })();
@@ -8,8 +8,8 @@
8
8
  <link href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,300italic,400italic,400,600' rel='stylesheet' type='text/css'>
9
9
  <!-- Use title if it's in the page YAML frontmatter -->
10
10
  <title>
11
- <% if data.page.title %>
12
- <%= data.page.title %> |
11
+ <% if current_page.data.title %>
12
+ <%= current_page.data.title %> |
13
13
  <% end %>
14
14
  <%= vars.book_title_short %>
15
15
  </title>
@@ -43,7 +43,7 @@
43
43
  <%= partial 'layouts/local-header' %>
44
44
  <%= partial 'layouts/title' %>
45
45
  <% if quick_links %>
46
- <div id="js-quick-links" <%= 'class="list-style-none"' if data.page.list_style_none %>>
46
+ <div id="js-quick-links" <%= 'class="list-style-none"' if current_page.data.list_style_none %>>
47
47
  <%= quick_links %>
48
48
  </div>
49
49
  <% end %>
@@ -14,7 +14,6 @@
14
14
  @import "partials/search";
15
15
  @import "partials/sidenav";
16
16
 
17
-
18
17
  // ~LAYOUT
19
18
  // ===================================================
20
19
  .container {
@@ -378,3 +377,12 @@ category: basics
378
377
  .index .to-top {
379
378
  display: none;
380
379
  }
380
+
381
+ .partial-notice {
382
+ color: red;
383
+ font-size: $font-size-m;
384
+
385
+ ul {
386
+ font-size: $font-size-s;
387
+ }
388
+ }
@@ -38,15 +38,12 @@ pre, pre code {
38
38
  overflow: visible;
39
39
  }
40
40
 
41
- .pivotalcf .logo {
42
- background: none;
43
- padding-left: 0;
44
- }
45
41
 
46
42
  .quick-links,
47
43
  .nav-container,
48
44
  .header,
49
45
  .site-footer-links,
46
+ #repo-link,
50
47
  #feedback {
51
48
  display: none;
52
49
  }
@@ -56,3 +53,5 @@ h1 {
56
53
  font-size: $font-size-l;
57
54
  }
58
55
 
56
+ @import "print-layout-styles";
57
+ @import "print-book-styles";
@@ -1,15 +1,6 @@
1
1
  class SubdirectoryAwareAssets < ::Middleman::Extension
2
- def initialize(app, options_hash={}, &block)
3
- super
4
-
5
- # After compass is setup, make it use the registered cache buster
6
- app.compass_config do |config|
7
- config.relative_assets = true
8
- end if app.respond_to?(:compass_config)
9
- end
10
-
11
2
  helpers do
12
- def asset_url(path, prefix="", options={})
3
+ def asset_path(path, prefix="", options={})
13
4
  url = super(path, prefix, options)
14
5
 
15
6
  unless global_asset_at? url
@@ -43,5 +34,3 @@ class SubdirectoryAwareAssets < ::Middleman::Extension
43
34
  end
44
35
 
45
36
  ::Middleman::Extensions.register(:subdirectory_aware_assets, SubdirectoryAwareAssets)
46
-
47
-
data/template_app/Gemfile CHANGED
@@ -1,6 +1,6 @@
1
1
  source 'http://rubygems.org'
2
2
 
3
- ruby '2.5.0'
3
+ ruby '2.3.0'
4
4
 
5
5
  gem 'rack'
6
6
  gem 'rack-rewrite'
@@ -1,30 +1,30 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- elasticsearch (1.0.17)
5
- elasticsearch-api (= 1.0.17)
6
- elasticsearch-transport (= 1.0.17)
7
- elasticsearch-api (1.0.17)
4
+ elasticsearch (2.0.0)
5
+ elasticsearch-api (= 2.0.0)
6
+ elasticsearch-transport (= 2.0.0)
7
+ elasticsearch-api (2.0.0)
8
8
  multi_json
9
- elasticsearch-transport (1.0.17)
9
+ elasticsearch-transport (2.0.0)
10
10
  faraday
11
11
  multi_json
12
12
  faraday (0.9.2)
13
13
  multipart-post (>= 1.2, < 3)
14
- libv8 (3.16.14.7)
15
- mimemagic (0.3.0)
16
- multi_json (1.11.2)
14
+ libv8 (3.16.14.15)
15
+ mimemagic (0.3.2)
16
+ multi_json (1.12.1)
17
17
  multipart-post (2.0.0)
18
- puma (3.3.0)
19
- rack (1.5.2)
20
- rack-rewrite (1.5.0)
21
- ref (1.0.5)
22
- sendgrid-ruby (1.1.5)
18
+ puma (3.6.0)
19
+ rack (2.0.1)
20
+ rack-rewrite (1.5.1)
21
+ ref (2.0.0)
22
+ sendgrid-ruby (1.1.6)
23
23
  faraday (~> 0.9)
24
24
  mimemagic
25
25
  smtpapi (~> 0.1)
26
26
  smtpapi (0.1.0)
27
- therubyracer (0.12.1)
27
+ therubyracer (0.12.2)
28
28
  libv8 (~> 3.16.14.0)
29
29
  ref
30
30
 
@@ -40,7 +40,7 @@ DEPENDENCIES
40
40
  therubyracer
41
41
 
42
42
  RUBY VERSION
43
- ruby 2.5.3p105
43
+ ruby 2.3.0p0
44
44
 
45
45
  BUNDLED WITH
46
- 1.17.3
46
+ 1.12.5
@@ -35,12 +35,38 @@ module Bookbinder
35
35
  end
36
36
  end
37
37
 
38
+ def extract_elasticsearch_url(services_hash)
39
+ user_provided = get_user_provided(services_hash)
40
+ return user_provided if user_provided
41
+
42
+ searchly = get_searchly(services_hash)
43
+ return searchly if searchly
44
+
45
+ raise 'No Elasticsearch configured!'
46
+ end
47
+
38
48
  private
39
49
 
40
50
  attr_reader :renderer, :client_class, :environment
41
51
 
42
52
  def elasticsearch_url
43
- @elasticsearch_url ||= JSON.parse(environment['VCAP_SERVICES'])['searchly'][0]['credentials']['uri']
53
+ @elasticsearch_url ||= extract_elasticsearch_url(JSON.parse(environment['VCAP_SERVICES']))
54
+ end
55
+
56
+ def get_user_provided(services_hash)
57
+ return nil unless services_hash.has_key?('user-provided')
58
+
59
+ elastic = services_hash['user-provided'].detect { |service| service['name'] == 'elastic.co' }
60
+
61
+ return nil unless elastic
62
+
63
+ elastic['credentials']['sslUri']
64
+ end
65
+
66
+ def get_searchly(services_hash)
67
+ return nil unless services_hash.has_key?('searchly')
68
+
69
+ services_hash['searchly'][0]['credentials']['sslUri']
44
70
  end
45
71
  end
46
72
  end
@@ -1,4 +1,5 @@
1
1
  require 'erb'
2
+ require 'rack/utils'
2
3
 
3
4
  module Bookbinder
4
5
  module Search
@@ -1,7 +1,13 @@
1
1
  <%
2
+ require 'rack'
3
+ require 'uri'
2
4
  def escape_html(str)
3
5
  Rack::Utils.escape_html(str)
4
6
  end
7
+
8
+ def uri_escape(str)
9
+ URI.escape(str, Regexp.new("[^#{URI::PATTERN::UNRESERVED}]"))
10
+ end
5
11
  %>
6
12
 
7
13
  <div class="search-results">
@@ -44,9 +50,9 @@ end
44
50
  </ul>
45
51
 
46
52
  <div class="pagination">
47
- <% search_query = "/search?q=#{ search_term }" %>
48
- <% search_query << "&product_name=#{ product_name }" unless product_name.nil? %>
49
- <% search_query << "&product_version=#{ product_version }" unless product_version.nil? %>
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? %>
50
56
  <% if page_number == 1 %>
51
57
  <span class="disabled page first">First</span>
52
58
  <span class="disabled page previous">Prev</span>
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bookbindery
3
3
  version: !ruby/object:Gem::Version
4
- version: 9.12.1
4
+ version: 10.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Grafton
@@ -19,10 +19,11 @@ authors:
19
19
  - Alpha Chen
20
20
  - Sarah McAlear
21
21
  - Gregg Van Hove
22
+ - Jess B Heron
22
23
  autorequire:
23
24
  bindir: install_bin
24
25
  cert_chain: []
25
- date: 2019-04-17 00:00:00.000000000 Z
26
+ date: 2016-08-29 00:00:00.000000000 Z
26
27
  dependencies:
27
28
  - !ruby/object:Gem::Dependency
28
29
  name: fog-aws
@@ -56,44 +57,44 @@ dependencies:
56
57
  name: middleman
57
58
  requirement: !ruby/object:Gem::Requirement
58
59
  requirements:
59
- - - "~>"
60
+ - - ">="
60
61
  - !ruby/object:Gem::Version
61
- version: 3.4.0
62
+ version: '0'
62
63
  type: :runtime
63
64
  prerelease: false
64
65
  version_requirements: !ruby/object:Gem::Requirement
65
66
  requirements:
66
- - - "~>"
67
+ - - ">="
67
68
  - !ruby/object:Gem::Version
68
- version: 3.4.0
69
+ version: '0'
69
70
  - !ruby/object:Gem::Dependency
70
71
  name: middleman-livereload
71
72
  requirement: !ruby/object:Gem::Requirement
72
73
  requirements:
73
- - - "~>"
74
+ - - ">="
74
75
  - !ruby/object:Gem::Version
75
- version: 3.4.3
76
+ version: '0'
76
77
  type: :runtime
77
78
  prerelease: false
78
79
  version_requirements: !ruby/object:Gem::Requirement
79
80
  requirements:
80
- - - "~>"
81
+ - - ">="
81
82
  - !ruby/object:Gem::Version
82
- version: 3.4.3
83
+ version: '0'
83
84
  - !ruby/object:Gem::Dependency
84
85
  name: middleman-syntax
85
86
  requirement: !ruby/object:Gem::Requirement
86
87
  requirements:
87
- - - "~>"
88
+ - - ">="
88
89
  - !ruby/object:Gem::Version
89
- version: '2.0'
90
+ version: '0'
90
91
  type: :runtime
91
92
  prerelease: false
92
93
  version_requirements: !ruby/object:Gem::Requirement
93
94
  requirements:
94
- - - "~>"
95
+ - - ">="
95
96
  - !ruby/object:Gem::Version
96
- version: '2.0'
97
+ version: '0'
97
98
  - !ruby/object:Gem::Dependency
98
99
  name: rouge
99
100
  requirement: !ruby/object:Gem::Requirement
@@ -248,6 +249,34 @@ dependencies:
248
249
  - - ">="
249
250
  - !ruby/object:Gem::Version
250
251
  version: '0'
252
+ - !ruby/object:Gem::Dependency
253
+ name: middleman-sprockets
254
+ requirement: !ruby/object:Gem::Requirement
255
+ requirements:
256
+ - - ">="
257
+ - !ruby/object:Gem::Version
258
+ version: '0'
259
+ type: :runtime
260
+ prerelease: false
261
+ version_requirements: !ruby/object:Gem::Requirement
262
+ requirements:
263
+ - - ">="
264
+ - !ruby/object:Gem::Version
265
+ version: '0'
266
+ - !ruby/object:Gem::Dependency
267
+ name: middleman-compass
268
+ requirement: !ruby/object:Gem::Requirement
269
+ requirements:
270
+ - - ">="
271
+ - !ruby/object:Gem::Version
272
+ version: '0'
273
+ type: :runtime
274
+ prerelease: false
275
+ version_requirements: !ruby/object:Gem::Requirement
276
+ requirements:
277
+ - - ">="
278
+ - !ruby/object:Gem::Version
279
+ version: '0'
251
280
  - !ruby/object:Gem::Dependency
252
281
  name: license_finder
253
282
  requirement: !ruby/object:Gem::Requirement
@@ -332,6 +361,20 @@ dependencies:
332
361
  - - ">="
333
362
  - !ruby/object:Gem::Version
334
363
  version: '0'
364
+ - !ruby/object:Gem::Dependency
365
+ name: rack-test
366
+ requirement: !ruby/object:Gem::Requirement
367
+ requirements:
368
+ - - ">="
369
+ - !ruby/object:Gem::Version
370
+ version: '0'
371
+ type: :development
372
+ prerelease: false
373
+ version_requirements: !ruby/object:Gem::Requirement
374
+ requirements:
375
+ - - ">="
376
+ - !ruby/object:Gem::Version
377
+ version: '0'
335
378
  description: A command line utility to be run in Book repositories to stitch together
336
379
  their constituent Markdown repos into a static-HTML-serving application
337
380
  email: gmorgan@gopivotal.com
@@ -417,6 +460,7 @@ files:
417
460
  - master_middleman/bookbinder_helpers.rb
418
461
  - master_middleman/compass_runner.rb
419
462
  - master_middleman/config.rb
463
+ - master_middleman/proof.rb
420
464
  - master_middleman/quicklinks_renderer.rb
421
465
  - master_middleman/source/javascripts/all.js
422
466
  - master_middleman/source/javascripts/book.js
@@ -432,7 +476,7 @@ files:
432
476
  - master_middleman/source/layouts/layout.erb
433
477
  - master_middleman/source/stylesheets/all.css.scss
434
478
  - master_middleman/source/stylesheets/base.scss
435
- - master_middleman/source/stylesheets/book-styles.css.scss
479
+ - master_middleman/source/stylesheets/book-styles.scss
436
480
  - master_middleman/source/stylesheets/layout-styles.scss
437
481
  - master_middleman/source/stylesheets/partials/_book-base-values.scss
438
482
  - master_middleman/source/stylesheets/partials/_book-vars.scss
@@ -446,6 +490,8 @@ files:
446
490
  - master_middleman/source/stylesheets/partials/_sidenav.scss
447
491
  - master_middleman/source/stylesheets/partials/_syntax-highlight.scss
448
492
  - master_middleman/source/stylesheets/partials/_vars.scss
493
+ - master_middleman/source/stylesheets/print-book-styles.scss
494
+ - master_middleman/source/stylesheets/print-layout-styles.scss
449
495
  - master_middleman/source/stylesheets/print.css.scss
450
496
  - master_middleman/source/subnavs/_default.erb
451
497
  - master_middleman/source/subnavs/_nav-links.erb