mcmire-shoulda-matchers 2.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (164) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +12 -0
  3. data/.travis.yml +32 -0
  4. data/.yardopts +7 -0
  5. data/Appraisals +45 -0
  6. data/CONTRIBUTING.md +41 -0
  7. data/Gemfile +31 -0
  8. data/Gemfile.lock +166 -0
  9. data/MIT-LICENSE +22 -0
  10. data/NEWS.md +299 -0
  11. data/README.md +163 -0
  12. data/Rakefile +116 -0
  13. data/doc_config/gh-pages/index.html.erb +9 -0
  14. data/doc_config/yard/setup.rb +22 -0
  15. data/doc_config/yard/templates/default/fulldoc/html/css/bootstrap.css +5967 -0
  16. data/doc_config/yard/templates/default/fulldoc/html/css/full_list.css +12 -0
  17. data/doc_config/yard/templates/default/fulldoc/html/css/global.css +45 -0
  18. data/doc_config/yard/templates/default/fulldoc/html/css/solarized.css +69 -0
  19. data/doc_config/yard/templates/default/fulldoc/html/css/style.css +283 -0
  20. data/doc_config/yard/templates/default/fulldoc/html/full_list.erb +32 -0
  21. data/doc_config/yard/templates/default/fulldoc/html/full_list_class.erb +1 -0
  22. data/doc_config/yard/templates/default/fulldoc/html/full_list_method.erb +8 -0
  23. data/doc_config/yard/templates/default/fulldoc/html/js/app.js +300 -0
  24. data/doc_config/yard/templates/default/fulldoc/html/js/full_list.js +1 -0
  25. data/doc_config/yard/templates/default/fulldoc/html/js/jquery.stickyheaders.js +289 -0
  26. data/doc_config/yard/templates/default/fulldoc/html/js/underscore.min.js +6 -0
  27. data/doc_config/yard/templates/default/fulldoc/html/setup.rb +8 -0
  28. data/doc_config/yard/templates/default/layout/html/breadcrumb.erb +14 -0
  29. data/doc_config/yard/templates/default/layout/html/fonts.erb +1 -0
  30. data/doc_config/yard/templates/default/layout/html/layout.erb +23 -0
  31. data/doc_config/yard/templates/default/layout/html/search.erb +13 -0
  32. data/doc_config/yard/templates/default/layout/html/setup.rb +8 -0
  33. data/doc_config/yard/templates/default/method_details/html/source.erb +10 -0
  34. data/doc_config/yard/templates/default/module/html/box_info.erb +31 -0
  35. data/features/rails_integration.feature +113 -0
  36. data/features/step_definitions/rails_steps.rb +162 -0
  37. data/features/support/env.rb +5 -0
  38. data/gemfiles/3.0.gemfile +24 -0
  39. data/gemfiles/3.0.gemfile.lock +150 -0
  40. data/gemfiles/3.1.gemfile +27 -0
  41. data/gemfiles/3.1.gemfile.lock +173 -0
  42. data/gemfiles/3.2.gemfile +27 -0
  43. data/gemfiles/3.2.gemfile.lock +171 -0
  44. data/gemfiles/4.0.0.gemfile +28 -0
  45. data/gemfiles/4.0.0.gemfile.lock +172 -0
  46. data/gemfiles/4.0.1.gemfile +28 -0
  47. data/gemfiles/4.0.1.gemfile.lock +172 -0
  48. data/lib/shoulda-matchers.rb +1 -0
  49. data/lib/shoulda/matchers.rb +11 -0
  50. data/lib/shoulda/matchers/action_controller.rb +17 -0
  51. data/lib/shoulda/matchers/action_controller/filter_param_matcher.rb +64 -0
  52. data/lib/shoulda/matchers/action_controller/redirect_to_matcher.rb +97 -0
  53. data/lib/shoulda/matchers/action_controller/render_template_matcher.rb +81 -0
  54. data/lib/shoulda/matchers/action_controller/render_with_layout_matcher.rb +117 -0
  55. data/lib/shoulda/matchers/action_controller/rescue_from_matcher.rb +114 -0
  56. data/lib/shoulda/matchers/action_controller/respond_with_matcher.rb +154 -0
  57. data/lib/shoulda/matchers/action_controller/route_matcher.rb +116 -0
  58. data/lib/shoulda/matchers/action_controller/route_params.rb +48 -0
  59. data/lib/shoulda/matchers/action_controller/set_session_matcher.rb +164 -0
  60. data/lib/shoulda/matchers/action_controller/set_the_flash_matcher.rb +296 -0
  61. data/lib/shoulda/matchers/active_model.rb +30 -0
  62. data/lib/shoulda/matchers/active_model/allow_mass_assignment_of_matcher.rb +167 -0
  63. data/lib/shoulda/matchers/active_model/allow_value_matcher.rb +314 -0
  64. data/lib/shoulda/matchers/active_model/disallow_value_matcher.rb +46 -0
  65. data/lib/shoulda/matchers/active_model/ensure_exclusion_of_matcher.rb +160 -0
  66. data/lib/shoulda/matchers/active_model/ensure_inclusion_of_matcher.rb +417 -0
  67. data/lib/shoulda/matchers/active_model/ensure_length_of_matcher.rb +337 -0
  68. data/lib/shoulda/matchers/active_model/errors.rb +10 -0
  69. data/lib/shoulda/matchers/active_model/exception_message_finder.rb +58 -0
  70. data/lib/shoulda/matchers/active_model/have_secure_password_matcher.rb +92 -0
  71. data/lib/shoulda/matchers/active_model/helpers.rb +46 -0
  72. data/lib/shoulda/matchers/active_model/numericality_matchers.rb +9 -0
  73. data/lib/shoulda/matchers/active_model/numericality_matchers/comparison_matcher.rb +75 -0
  74. data/lib/shoulda/matchers/active_model/numericality_matchers/even_number_matcher.rb +27 -0
  75. data/lib/shoulda/matchers/active_model/numericality_matchers/numeric_type_matcher.rb +41 -0
  76. data/lib/shoulda/matchers/active_model/numericality_matchers/odd_number_matcher.rb +27 -0
  77. data/lib/shoulda/matchers/active_model/numericality_matchers/only_integer_matcher.rb +26 -0
  78. data/lib/shoulda/matchers/active_model/validate_absence_of_matcher.rb +112 -0
  79. data/lib/shoulda/matchers/active_model/validate_acceptance_of_matcher.rb +77 -0
  80. data/lib/shoulda/matchers/active_model/validate_confirmation_of_matcher.rb +121 -0
  81. data/lib/shoulda/matchers/active_model/validate_numericality_of_matcher.rb +380 -0
  82. data/lib/shoulda/matchers/active_model/validate_presence_of_matcher.rb +89 -0
  83. data/lib/shoulda/matchers/active_model/validate_uniqueness_of_matcher.rb +372 -0
  84. data/lib/shoulda/matchers/active_model/validation_matcher.rb +97 -0
  85. data/lib/shoulda/matchers/active_model/validation_message_finder.rb +69 -0
  86. data/lib/shoulda/matchers/active_record.rb +22 -0
  87. data/lib/shoulda/matchers/active_record/accept_nested_attributes_for_matcher.rb +204 -0
  88. data/lib/shoulda/matchers/active_record/association_matcher.rb +901 -0
  89. data/lib/shoulda/matchers/active_record/association_matchers.rb +9 -0
  90. data/lib/shoulda/matchers/active_record/association_matchers/counter_cache_matcher.rb +41 -0
  91. data/lib/shoulda/matchers/active_record/association_matchers/dependent_matcher.rb +41 -0
  92. data/lib/shoulda/matchers/active_record/association_matchers/model_reflection.rb +81 -0
  93. data/lib/shoulda/matchers/active_record/association_matchers/model_reflector.rb +65 -0
  94. data/lib/shoulda/matchers/active_record/association_matchers/option_verifier.rb +94 -0
  95. data/lib/shoulda/matchers/active_record/association_matchers/order_matcher.rb +41 -0
  96. data/lib/shoulda/matchers/active_record/association_matchers/source_matcher.rb +41 -0
  97. data/lib/shoulda/matchers/active_record/association_matchers/through_matcher.rb +63 -0
  98. data/lib/shoulda/matchers/active_record/have_db_column_matcher.rb +261 -0
  99. data/lib/shoulda/matchers/active_record/have_db_index_matcher.rb +149 -0
  100. data/lib/shoulda/matchers/active_record/have_readonly_attribute_matcher.rb +72 -0
  101. data/lib/shoulda/matchers/active_record/serialize_matcher.rb +181 -0
  102. data/lib/shoulda/matchers/assertion_error.rb +19 -0
  103. data/lib/shoulda/matchers/error.rb +6 -0
  104. data/lib/shoulda/matchers/integrations/rspec.rb +20 -0
  105. data/lib/shoulda/matchers/integrations/test_unit.rb +30 -0
  106. data/lib/shoulda/matchers/rails_shim.rb +50 -0
  107. data/lib/shoulda/matchers/version.rb +6 -0
  108. data/lib/shoulda/matchers/warn.rb +8 -0
  109. data/shoulda-matchers.gemspec +23 -0
  110. data/spec/shoulda/matchers/action_controller/filter_param_matcher_spec.rb +22 -0
  111. data/spec/shoulda/matchers/action_controller/redirect_to_matcher_spec.rb +42 -0
  112. data/spec/shoulda/matchers/action_controller/render_template_matcher_spec.rb +78 -0
  113. data/spec/shoulda/matchers/action_controller/render_with_layout_matcher_spec.rb +63 -0
  114. data/spec/shoulda/matchers/action_controller/rescue_from_matcher_spec.rb +63 -0
  115. data/spec/shoulda/matchers/action_controller/respond_with_matcher_spec.rb +31 -0
  116. data/spec/shoulda/matchers/action_controller/route_matcher_spec.rb +70 -0
  117. data/spec/shoulda/matchers/action_controller/route_params_spec.rb +30 -0
  118. data/spec/shoulda/matchers/action_controller/set_session_matcher_spec.rb +51 -0
  119. data/spec/shoulda/matchers/action_controller/set_the_flash_matcher_spec.rb +153 -0
  120. data/spec/shoulda/matchers/active_model/allow_mass_assignment_of_matcher_spec.rb +111 -0
  121. data/spec/shoulda/matchers/active_model/allow_value_matcher_spec.rb +170 -0
  122. data/spec/shoulda/matchers/active_model/disallow_value_matcher_spec.rb +81 -0
  123. data/spec/shoulda/matchers/active_model/ensure_exclusion_of_matcher_spec.rb +95 -0
  124. data/spec/shoulda/matchers/active_model/ensure_inclusion_of_matcher_spec.rb +320 -0
  125. data/spec/shoulda/matchers/active_model/ensure_length_of_matcher_spec.rb +166 -0
  126. data/spec/shoulda/matchers/active_model/exception_message_finder_spec.rb +111 -0
  127. data/spec/shoulda/matchers/active_model/have_secure_password_matcher_spec.rb +20 -0
  128. data/spec/shoulda/matchers/active_model/helpers_spec.rb +158 -0
  129. data/spec/shoulda/matchers/active_model/numericality_matchers/comparison_matcher_spec.rb +169 -0
  130. data/spec/shoulda/matchers/active_model/numericality_matchers/even_number_matcher_spec.rb +59 -0
  131. data/spec/shoulda/matchers/active_model/numericality_matchers/odd_number_matcher_spec.rb +59 -0
  132. data/spec/shoulda/matchers/active_model/numericality_matchers/only_integer_matcher_spec.rb +57 -0
  133. data/spec/shoulda/matchers/active_model/validate_absence_of_matcher_spec.rb +139 -0
  134. data/spec/shoulda/matchers/active_model/validate_acceptance_of_matcher_spec.rb +41 -0
  135. data/spec/shoulda/matchers/active_model/validate_confirmation_of_matcher_spec.rb +47 -0
  136. data/spec/shoulda/matchers/active_model/validate_numericality_of_matcher_spec.rb +331 -0
  137. data/spec/shoulda/matchers/active_model/validate_presence_of_matcher_spec.rb +180 -0
  138. data/spec/shoulda/matchers/active_model/validate_uniqueness_of_matcher_spec.rb +398 -0
  139. data/spec/shoulda/matchers/active_model/validation_message_finder_spec.rb +127 -0
  140. data/spec/shoulda/matchers/active_record/accept_nested_attributes_for_matcher_spec.rb +107 -0
  141. data/spec/shoulda/matchers/active_record/association_matcher_spec.rb +860 -0
  142. data/spec/shoulda/matchers/active_record/association_matchers/model_reflection_spec.rb +247 -0
  143. data/spec/shoulda/matchers/active_record/have_db_column_matcher_spec.rb +111 -0
  144. data/spec/shoulda/matchers/active_record/have_db_index_matcher_spec.rb +78 -0
  145. data/spec/shoulda/matchers/active_record/have_readonly_attributes_matcher_spec.rb +41 -0
  146. data/spec/shoulda/matchers/active_record/serialize_matcher_spec.rb +86 -0
  147. data/spec/spec_helper.rb +26 -0
  148. data/spec/support/active_model_versions.rb +13 -0
  149. data/spec/support/active_resource_builder.rb +29 -0
  150. data/spec/support/activemodel_helpers.rb +19 -0
  151. data/spec/support/capture_helpers.rb +19 -0
  152. data/spec/support/class_builder.rb +42 -0
  153. data/spec/support/controller_builder.rb +74 -0
  154. data/spec/support/fail_with_message_including_matcher.rb +33 -0
  155. data/spec/support/fail_with_message_matcher.rb +32 -0
  156. data/spec/support/i18n_faker.rb +10 -0
  157. data/spec/support/mailer_builder.rb +10 -0
  158. data/spec/support/model_builder.rb +81 -0
  159. data/spec/support/rails_versions.rb +18 -0
  160. data/spec/support/shared_examples/numerical_submatcher.rb +19 -0
  161. data/spec/support/shared_examples/numerical_type_submatcher.rb +17 -0
  162. data/spec/support/test_application.rb +120 -0
  163. data/yard.watchr +5 -0
  164. metadata +281 -0
@@ -0,0 +1,163 @@
1
+ # shoulda-matchers [![Gem Version][fury-badge]][fury] [![Build Status][travis-badge]][travis]
2
+
3
+ [Official Documentation][rubydocs]
4
+
5
+ shoulda-matchers provides Test::Unit- and RSpec-compatible one-liners that test
6
+ common Rails functionality. These tests would otherwise be much longer, more
7
+ complex, and error-prone.
8
+
9
+ ### ActiveModel Matchers
10
+
11
+ * **[allow_mass_assignment_of](Shoulda/Matchers/ActiveModel.html#allow_mass_assignment_of-instance_method)**
12
+ tests usage of Rails 3's `attr_accessible` and `attr_protected` macros.
13
+ * **[allow_value](Shoulda/Matchers/ActiveModel.html#allow_value-instance_method)**
14
+ tests usage of the `validates_format_of` validation.
15
+ * **[ensure_inclusion_of](Shoulda/Matchers/ActiveModel.html#ensure_inclusion_of-instance_method)**
16
+ tests usage of `validates_inclusion_of`.
17
+ * **[ensure_exclusion_of](Shoulda/Matchers/ActiveModel.html#ensure_exclusion_of-instance_method)**
18
+ tests usage of `validates_exclusion_of`.
19
+ * **[ensure_length_of](Shoulda/Matchers/ActiveModel.html#ensure_length_of-instance_method)**
20
+ tests usage of `validates_length_of`.
21
+ * **[have_secure_password](Shoulda/Matchers/ActiveModel.html#have_secure_password-instance_method)**
22
+ tests usage of `has_secure_password`.
23
+ * **[validate_confirmation_of](Shoulda/Matchers/ActiveModel.html#validate_confirmation_of-instance_method)**
24
+ tests usage of `validates_confirmation_of`.
25
+ * **[validate_numericality_of](Shoulda/Matchers/ActiveModel.html#validate_numericality_of-instance_method)**
26
+ tests usage of `validates_numericality_of`.
27
+ * **[validate_presence_of](Shoulda/Matchers/ActiveModel.html#validate_presence_of-instance_method)**
28
+ tests usage of `validates_presence_of`.
29
+ * **[validate_uniqueness_of](Shoulda/Matchers/ActiveModel.html#validate_uniqueness_of-instance_method)**
30
+ tests usage of `validates_uniqueness_of`.
31
+
32
+ ### ActiveRecord Matchers
33
+
34
+ * **[accept_nested_attributes_for](Shoulda/Matchers/ActiveModel.html#accept_nested_attributes_for-instance_method)**
35
+ tests usage of the `accepts_nested_attributes_for` macro.
36
+ * **[belong_to](Shoulda/Matchers/ActiveModel.html#belong_to-instance_method)**
37
+ tests your `belongs_to` associations.
38
+ * **[have_many](Shoulda/Matchers/ActiveModel.html#have_many-instance_method)**
39
+ tests your `has_many` associations.
40
+ * **[have_one](Shoulda/Matchers/ActiveModel.html#have_one-instance_method)**
41
+ tests your `has_one` associations.
42
+ * **[have_and_belong_to_many](Shoulda/Matchers/ActiveModel.html#have_and_belong_to_many-instance_method)**
43
+ tests your `has_and_belongs_to_many` associations.
44
+ * **[have_db_column](Shoulda/Matchers/ActiveModel.html#have_db_column-instance_method)**
45
+ tests that the table that backs your model has a specific column.
46
+ * **[have_db_index](Shoulda/Matchers/ActiveModel.html#have_db_index-instance_method)**
47
+ tests that the table that backs your model has an index on a specific column.
48
+ * **[have_readonly_attribute](Shoulda/Matchers/ActiveModel.html#have_readonly_attribute-instance_method)**
49
+ tests usage of the `attr_readonly` macro.
50
+ * **[serialize](Shoulda/Matchers/ActiveModel.html#serialize-instance_method)**
51
+ tests usage of the `serialize` macro.
52
+
53
+ ### ActionController Matchers
54
+
55
+ * **[filter_param](Shoulda/Matchers/ActiveModel.html#filter_param-instance_method)**
56
+ tests parameter filtering configuration.
57
+ * **[redirect_to](Shoulda/Matchers/ActiveModel.html#redirect_to-instance_method)**
58
+ tests that an action redirects to a certain location.
59
+ * **[render_template](Shoulda/Matchers/ActiveModel.html#render_template-instance_method)**
60
+ tests that an action renders a template.
61
+ * **[render_with_layout](Shoulda/Matchers/ActiveModel.html#render_with_layout-instance_method)**
62
+ tests that an action is rendereed with a certain layout.
63
+ * **[rescue_from](Shoulda/Matchers/ActiveModel.html#rescue_from-instance_method)**
64
+ tests usage of the `rescue_from` macro.
65
+ * **[respond_with](Shoulda/Matchers/ActiveModel.html#respond_with-instance_method)**
66
+ tests that an action responds with a certain status code.
67
+ * **[route](Shoulda/Matchers/ActiveModel.html#route-instance_method)**
68
+ tests your routes.
69
+ * **[set_session](Shoulda/Matchers/ActiveModel.html#set_session-instance_method)**
70
+ makes assertions on the `session` hash.
71
+ * **[set_the_flash](Shoulda/Matchers/ActiveModel.html#set_the_flash-instance_method)**
72
+ makes assertions on the `flash` hash.
73
+
74
+ ## Installation
75
+
76
+ ### RSpec
77
+
78
+ Include the gem in your Gemfile:
79
+
80
+ ```ruby
81
+ group :test do
82
+ gem 'shoulda-matchers'
83
+ end
84
+ ```
85
+
86
+ ### Test::Unit
87
+
88
+ shoulda-matchers was originally a component of
89
+ [Shoulda](http://github.com/thoughtbot/shoulda) -- it's what provides the nice
90
+ `should` syntax which is demonstrated below. For this reason, include it in
91
+ your Gemfile instead:
92
+
93
+ ```ruby
94
+ group :test do
95
+ gem 'shoulda'
96
+ end
97
+ ```
98
+
99
+ ### Non-Rails apps
100
+
101
+ Once it is loaded, shoulda-matchers automatically includes itself into your test
102
+ framework. It will mix in the appropriate matchers for ActiveRecord,
103
+ ActiveModel, and ActionController depending on the modules that are available at
104
+ runtime. For instance, in order to use the ActiveRecord matchers, ActiveRecord
105
+ must be available beforehand.
106
+
107
+ If your application is on Rails, everything should "just work", as
108
+ shoulda-matchers will most likely be declared after Rails in your Gemfile. If
109
+ your application is on another framework such as Sinatra or Padrino, you may
110
+ have a different setup, so you will want to ensure that you are requiring
111
+ shoulda-matchers after the components of Rails you are using. For instance,
112
+ if you wanted to use and test against ActiveModel, you'd say:
113
+
114
+ ```ruby
115
+ gem 'activemodel'
116
+ gem 'shoulda-matchers'
117
+ ```
118
+
119
+ and not:
120
+
121
+ ```ruby
122
+ gem 'shoulda-matchers'
123
+ gem 'activemodel'
124
+ ```
125
+
126
+ ## Generating documentation
127
+
128
+ YARD is used to generate documentation, which can be viewed online at
129
+ <http://thoughtbot.github.com/shoulda-matchers/master>. You can preview changes
130
+ you make to the documentation locally by running
131
+
132
+ yard doc
133
+
134
+ from this directory. Then, open `doc/index.html` in your browser.
135
+
136
+ If you want to see a live preview as you work without having to run `yard` over
137
+ and over again, keep this command running in a separate terminal session:
138
+
139
+ watchr yard.watchr
140
+
141
+ ## Versioning
142
+
143
+ shoulda-matchers follows Semantic Versioning 2.0 as defined at
144
+ <http://semver.org>.
145
+
146
+ ## Credits
147
+
148
+ shoulda-matchers is maintained and funded by [thoughtbot][community]. Thank you
149
+ to all the [contributors][contributors].
150
+
151
+ ## License
152
+
153
+ shoulda-matchers is copyright © 2006-2014 thoughtbot, inc. It is free software,
154
+ and may be redistributed under the terms specified in the
155
+ [MIT-LICENSE](MIT-LICENSE) file.
156
+
157
+ [fury-badge]: https://badge.fury.io/rb/shoulda-matchers.png
158
+ [fury]: http://badge.fury.io/rb/shoulda-matchers
159
+ [travis-badge]: https://secure.travis-ci.org/thoughtbot/shoulda-matchers.png?branch=master
160
+ [travis]: http://travis-ci.org/thoughtbot/shoulda-matchers
161
+ [rubydocs]: http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/frames
162
+ [community]: http://thoughtbot.com/community
163
+ [contributors]: https://github.com/thoughtbot/shoulda-matchers/contributors
@@ -0,0 +1,116 @@
1
+ require 'bundler/setup'
2
+ require 'bundler/gem_tasks'
3
+ require 'rspec/core/rake_task'
4
+ require 'cucumber/rake/task'
5
+ require 'appraisal'
6
+ require 'erb'
7
+ require_relative 'lib/shoulda/matchers/version'
8
+
9
+ CURRENT_VERSION = Shoulda::Matchers::VERSION
10
+
11
+ RSpec::Core::RakeTask.new do |t|
12
+ t.pattern = "spec/**/*_spec.rb"
13
+ t.rspec_opts = '--color --format progress'
14
+ t.verbose = false
15
+ end
16
+
17
+ Cucumber::Rake::Task.new do |t|
18
+ t.fork = false
19
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'progress')]
20
+ end
21
+
22
+ task :default do
23
+ if ENV['BUNDLE_GEMFILE'] =~ /gemfiles/
24
+ Rake::Task['spec'].invoke
25
+ Rake::Task['cucumber'].invoke
26
+ else
27
+ Rake::Task['appraise'].invoke
28
+ end
29
+ end
30
+
31
+ task :appraise do
32
+ exec 'appraisal install && appraisal rake'
33
+ end
34
+
35
+ GH_PAGES_DIR = '.gh-pages'
36
+
37
+ namespace :docs do
38
+ file GH_PAGES_DIR do
39
+ sh "git clone git@github.com:mcmire/shoulda-matchers.git #{GH_PAGES_DIR} --branch gh-pages"
40
+ end
41
+
42
+ task :setup => GH_PAGES_DIR do
43
+ within_gh_pages do
44
+ sh 'git fetch origin'
45
+ sh 'git reset --hard origin/gh-pages'
46
+ end
47
+ end
48
+
49
+ desc 'Generate docs for a particular version and push them to GitHub'
50
+ task :publish, [:version, :is_latest] => :setup do |t, args|
51
+ latest = (args.is_latest == 'true')
52
+ generate_docs(args.version, latest: latest)
53
+ publish_docs(args.version, latest: latest)
54
+ end
55
+
56
+ desc "Generate docs for version #{CURRENT_VERSION} and push them to GitHub"
57
+ task :publish_latest => :setup do
58
+ generate_docs(CURRENT_VERSION, latest: true)
59
+ publish_docs(CURRENT_VERSION, latest: true)
60
+ end
61
+
62
+ def generate_docs(version, options = {})
63
+ ref = determine_ref_from(version)
64
+
65
+ sh "bundle exec yard -o #{GH_PAGES_DIR}/#{ref}"
66
+
67
+ within_gh_pages do
68
+ sh "git add #{ref}"
69
+ end
70
+
71
+ if options[:latest]
72
+ generate_file_that_redirects_to_latest_version(ref)
73
+ end
74
+ end
75
+
76
+ def publish_docs(version, options = {})
77
+ message = build_commit_message(version, options)
78
+
79
+ within_gh_pages do
80
+ sh 'git clean -f'
81
+ sh "git commit -m '#{message}'"
82
+ sh 'git push'
83
+ end
84
+ end
85
+
86
+ def generate_file_that_redirects_to_latest_version(version)
87
+ erb = ERB.new(File.read('doc_config/gh-pages/index.html.erb'))
88
+
89
+ within_gh_pages do
90
+ File.open('index.html', 'w') { |f| f.write(erb.result(binding)) }
91
+ sh 'git add index.html'
92
+ end
93
+ end
94
+
95
+ def determine_ref_from(version)
96
+ if version =~ /^\d+\.\d+\.\d+/
97
+ 'v' + version
98
+ else
99
+ version
100
+ end
101
+ end
102
+
103
+ def build_commit_message(version, options)
104
+ if options[:latest]
105
+ "Regenerated docs for latest version #{version}"
106
+ else
107
+ "Regenerated docs for version #{version}"
108
+ end
109
+ end
110
+
111
+ def within_gh_pages(&block)
112
+ Dir.chdir(GH_PAGES_DIR, &block)
113
+ end
114
+ end
115
+
116
+ task release: 'docs:publish_latest'
@@ -0,0 +1,9 @@
1
+ <!doctype html>
2
+ <html>
3
+ <head>
4
+ <title>shoulda-matchers Documentation - latest</title>
5
+ <meta http-equiv="refresh" content="0;URL=http://mcmire.github.io/shoulda-matchers/<%= version %>">
6
+ </head>
7
+ <body>
8
+ </body>
9
+ </html>
@@ -0,0 +1,22 @@
1
+ YARD::Templates::Engine.register_template_path(File.dirname(__FILE__) + '/templates')
2
+
3
+ require 'pygments.rb'
4
+
5
+ module YARD
6
+ module Templates
7
+ module Helpers
8
+ module HtmlSyntaxHighlightHelper
9
+ def html_syntax_highlight_ruby(source)
10
+ highlight_with_pygments(:ruby, source)
11
+ end
12
+
13
+ private
14
+
15
+ def highlight_with_pygments(language, source)
16
+ html = Pygments.highlight(source, lexer: language.to_s)
17
+ html.sub(%r{\A<div class="highlight">\s*<pre>}, '').sub(%r{</pre>\s*</div>\Z}, '')
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,5967 @@
1
+ /*!
2
+ * Bootstrap v3.0.3
3
+ *
4
+ * Copyright 2013 Twitter, Inc
5
+ * Licensed under the Apache License v2.0
6
+ * http://www.apache.org/licenses/LICENSE-2.0
7
+ *
8
+ * Designed and built with all the love in the world @twitter by @mdo and @fat.
9
+ */
10
+
11
+ /*! normalize.css v2.1.3 | MIT License | git.io/normalize */
12
+ article,
13
+ aside,
14
+ details,
15
+ figcaption,
16
+ figure,
17
+ footer,
18
+ header,
19
+ hgroup,
20
+ main,
21
+ nav,
22
+ section,
23
+ summary {
24
+ display: block;
25
+ }
26
+ audio,
27
+ canvas,
28
+ video {
29
+ display: inline-block;
30
+ }
31
+ audio:not([controls]) {
32
+ display: none;
33
+ height: 0;
34
+ }
35
+ [hidden],
36
+ template {
37
+ display: none;
38
+ }
39
+ html {
40
+ font-family: sans-serif;
41
+ -ms-text-size-adjust: 100%;
42
+ -webkit-text-size-adjust: 100%;
43
+ }
44
+ body {
45
+ margin: 0;
46
+ }
47
+ a {
48
+ background: transparent;
49
+ }
50
+ a:focus {
51
+ outline: thin dotted;
52
+ }
53
+ a:active,
54
+ a:hover {
55
+ outline: 0;
56
+ }
57
+ h1 {
58
+ font-size: 2em;
59
+ margin: 0.67em 0;
60
+ }
61
+ abbr[title] {
62
+ border-bottom: 1px dotted;
63
+ }
64
+ b,
65
+ strong {
66
+ font-weight: bold;
67
+ }
68
+ dfn {
69
+ font-style: italic;
70
+ }
71
+ hr {
72
+ -moz-box-sizing: content-box;
73
+ box-sizing: content-box;
74
+ height: 0;
75
+ }
76
+ mark {
77
+ background: #ff0;
78
+ color: #000;
79
+ }
80
+ code,
81
+ kbd,
82
+ pre,
83
+ samp {
84
+ font-family: monospace, serif;
85
+ font-size: 1em;
86
+ }
87
+ pre {
88
+ white-space: pre-wrap;
89
+ }
90
+ q {
91
+ quotes: "\201C" "\201D" "\2018" "\2019";
92
+ }
93
+ small {
94
+ font-size: 80%;
95
+ }
96
+ sub,
97
+ sup {
98
+ font-size: 75%;
99
+ line-height: 0;
100
+ position: relative;
101
+ vertical-align: baseline;
102
+ }
103
+ sup {
104
+ top: -0.5em;
105
+ }
106
+ sub {
107
+ bottom: -0.25em;
108
+ }
109
+ img {
110
+ border: 0;
111
+ }
112
+ svg:not(:root) {
113
+ overflow: hidden;
114
+ }
115
+ figure {
116
+ margin: 0;
117
+ }
118
+ fieldset {
119
+ border: 1px solid #c0c0c0;
120
+ margin: 0 2px;
121
+ padding: 0.35em 0.625em 0.75em;
122
+ }
123
+ legend {
124
+ border: 0;
125
+ padding: 0;
126
+ }
127
+ button,
128
+ input,
129
+ select,
130
+ textarea {
131
+ font-family: inherit;
132
+ font-size: 100%;
133
+ margin: 0;
134
+ }
135
+ button,
136
+ input {
137
+ line-height: normal;
138
+ }
139
+ button,
140
+ select {
141
+ text-transform: none;
142
+ }
143
+ button,
144
+ html input[type="button"],
145
+ input[type="reset"],
146
+ input[type="submit"] {
147
+ -webkit-appearance: button;
148
+ cursor: pointer;
149
+ }
150
+ button[disabled],
151
+ html input[disabled] {
152
+ cursor: default;
153
+ }
154
+ input[type="checkbox"],
155
+ input[type="radio"] {
156
+ box-sizing: border-box;
157
+ padding: 0;
158
+ }
159
+ input[type="search"] {
160
+ -webkit-appearance: textfield;
161
+ -moz-box-sizing: content-box;
162
+ -webkit-box-sizing: content-box;
163
+ box-sizing: content-box;
164
+ }
165
+ input[type="search"]::-webkit-search-cancel-button,
166
+ input[type="search"]::-webkit-search-decoration {
167
+ -webkit-appearance: none;
168
+ }
169
+ button::-moz-focus-inner,
170
+ input::-moz-focus-inner {
171
+ border: 0;
172
+ padding: 0;
173
+ }
174
+ textarea {
175
+ overflow: auto;
176
+ vertical-align: top;
177
+ }
178
+ table {
179
+ border-collapse: collapse;
180
+ border-spacing: 0;
181
+ }
182
+ @media print {
183
+ * {
184
+ text-shadow: none !important;
185
+ color: #000 !important;
186
+ background: transparent !important;
187
+ box-shadow: none !important;
188
+ }
189
+ a,
190
+ a:visited {
191
+ text-decoration: underline;
192
+ }
193
+ a[href]:after {
194
+ content: " (" attr(href) ")";
195
+ }
196
+ abbr[title]:after {
197
+ content: " (" attr(title) ")";
198
+ }
199
+ a[href^="javascript:"]:after,
200
+ a[href^="#"]:after {
201
+ content: "";
202
+ }
203
+ pre,
204
+ blockquote {
205
+ border: 1px solid #999;
206
+ page-break-inside: avoid;
207
+ }
208
+ thead {
209
+ display: table-header-group;
210
+ }
211
+ tr,
212
+ img {
213
+ page-break-inside: avoid;
214
+ }
215
+ img {
216
+ max-width: 100% !important;
217
+ }
218
+ @page {
219
+ margin: 2cm .5cm;
220
+ }
221
+ p,
222
+ h2,
223
+ h3 {
224
+ orphans: 3;
225
+ widows: 3;
226
+ }
227
+ h2,
228
+ h3 {
229
+ page-break-after: avoid;
230
+ }
231
+ select {
232
+ background: #fff !important;
233
+ }
234
+ .navbar {
235
+ display: none;
236
+ }
237
+ .table td,
238
+ .table th {
239
+ background-color: #fff !important;
240
+ }
241
+ .btn > .caret,
242
+ .dropup > .btn > .caret {
243
+ border-top-color: #000 !important;
244
+ }
245
+ .label {
246
+ border: 1px solid #000;
247
+ }
248
+ .table {
249
+ border-collapse: collapse !important;
250
+ }
251
+ .table-bordered th,
252
+ .table-bordered td {
253
+ border: 1px solid #ddd !important;
254
+ }
255
+ }
256
+ *,
257
+ *:before,
258
+ *:after {
259
+ -webkit-box-sizing: border-box;
260
+ -moz-box-sizing: border-box;
261
+ box-sizing: border-box;
262
+ }
263
+ html {
264
+ font-size: 62.5%;
265
+ -webkit-tap-highlight-color: rgba(0, 0, 0, 0);
266
+ }
267
+ body {
268
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
269
+ font-size: 16px;
270
+ line-height: 1.5;
271
+ color: #333333;
272
+ background-color: #ffffff;
273
+ }
274
+ input,
275
+ button,
276
+ select,
277
+ textarea {
278
+ font-family: inherit;
279
+ font-size: inherit;
280
+ line-height: inherit;
281
+ }
282
+ a {
283
+ color: #428bca;
284
+ text-decoration: none;
285
+ }
286
+ a:hover,
287
+ a:focus {
288
+ color: #2a6496;
289
+ text-decoration: underline;
290
+ }
291
+ a:focus {
292
+ outline: thin dotted;
293
+ outline: 5px auto -webkit-focus-ring-color;
294
+ outline-offset: -2px;
295
+ }
296
+ img {
297
+ vertical-align: middle;
298
+ }
299
+ .img-responsive {
300
+ display: block;
301
+ max-width: 100%;
302
+ height: auto;
303
+ }
304
+ .img-rounded {
305
+ border-radius: 6px;
306
+ }
307
+ .img-thumbnail {
308
+ padding: 4px;
309
+ line-height: 1.5;
310
+ background-color: #ffffff;
311
+ border: 1px solid #dddddd;
312
+ border-radius: 4px;
313
+ -webkit-transition: all 0.2s ease-in-out;
314
+ transition: all 0.2s ease-in-out;
315
+ display: inline-block;
316
+ max-width: 100%;
317
+ height: auto;
318
+ }
319
+ .img-circle {
320
+ border-radius: 50%;
321
+ }
322
+ hr {
323
+ margin-top: 24px;
324
+ margin-bottom: 24px;
325
+ border: 0;
326
+ border-top: 1px solid #eeeeee;
327
+ }
328
+ .sr-only {
329
+ position: absolute;
330
+ width: 1px;
331
+ height: 1px;
332
+ margin: -1px;
333
+ padding: 0;
334
+ overflow: hidden;
335
+ clip: rect(0, 0, 0, 0);
336
+ border: 0;
337
+ }
338
+ h1,
339
+ h2,
340
+ h3,
341
+ h4,
342
+ h5,
343
+ h6,
344
+ .h1,
345
+ .h2,
346
+ .h3,
347
+ .h4,
348
+ .h5,
349
+ .h6 {
350
+ font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
351
+ font-weight: 500;
352
+ line-height: 1.1;
353
+ color: inherit;
354
+ }
355
+ h1 small,
356
+ h2 small,
357
+ h3 small,
358
+ h4 small,
359
+ h5 small,
360
+ h6 small,
361
+ .h1 small,
362
+ .h2 small,
363
+ .h3 small,
364
+ .h4 small,
365
+ .h5 small,
366
+ .h6 small,
367
+ h1 .small,
368
+ h2 .small,
369
+ h3 .small,
370
+ h4 .small,
371
+ h5 .small,
372
+ h6 .small,
373
+ .h1 .small,
374
+ .h2 .small,
375
+ .h3 .small,
376
+ .h4 .small,
377
+ .h5 .small,
378
+ .h6 .small {
379
+ font-weight: normal;
380
+ line-height: 1;
381
+ color: #999999;
382
+ }
383
+ h1,
384
+ h2,
385
+ h3 {
386
+ margin-top: 24px;
387
+ margin-bottom: 12px;
388
+ }
389
+ h1 small,
390
+ h2 small,
391
+ h3 small,
392
+ h1 .small,
393
+ h2 .small,
394
+ h3 .small {
395
+ font-size: 65%;
396
+ }
397
+ h4,
398
+ h5,
399
+ h6 {
400
+ margin-top: 12px;
401
+ margin-bottom: 12px;
402
+ }
403
+ h4 small,
404
+ h5 small,
405
+ h6 small,
406
+ h4 .small,
407
+ h5 .small,
408
+ h6 .small {
409
+ font-size: 75%;
410
+ }
411
+ h1,
412
+ .h1 {
413
+ font-size: 41px;
414
+ }
415
+ h2,
416
+ .h2 {
417
+ font-size: 34px;
418
+ }
419
+ h3,
420
+ .h3 {
421
+ font-size: 28px;
422
+ }
423
+ h4,
424
+ .h4 {
425
+ font-size: 20px;
426
+ }
427
+ h5,
428
+ .h5 {
429
+ font-size: 16px;
430
+ }
431
+ h6,
432
+ .h6 {
433
+ font-size: 14px;
434
+ }
435
+ p {
436
+ margin: 0 0 12px;
437
+ }
438
+ .lead {
439
+ margin-bottom: 24px;
440
+ font-size: 18px;
441
+ font-weight: 200;
442
+ line-height: 1.4;
443
+ }
444
+ @media (min-width: 768px) {
445
+ .lead {
446
+ font-size: 24px;
447
+ }
448
+ }
449
+ small,
450
+ .small {
451
+ font-size: 85%;
452
+ }
453
+ cite {
454
+ font-style: normal;
455
+ }
456
+ .text-muted {
457
+ color: #999999;
458
+ }
459
+ .text-primary {
460
+ color: #428bca;
461
+ }
462
+ .text-primary:hover {
463
+ color: #3071a9;
464
+ }
465
+ .text-warning {
466
+ color: #8a6d3b;
467
+ }
468
+ .text-warning:hover {
469
+ color: #66512c;
470
+ }
471
+ .text-danger {
472
+ color: #a94442;
473
+ }
474
+ .text-danger:hover {
475
+ color: #843534;
476
+ }
477
+ .text-success {
478
+ color: #3c763d;
479
+ }
480
+ .text-success:hover {
481
+ color: #2b542c;
482
+ }
483
+ .text-info {
484
+ color: #31708f;
485
+ }
486
+ .text-info:hover {
487
+ color: #245269;
488
+ }
489
+ .text-left {
490
+ text-align: left;
491
+ }
492
+ .text-right {
493
+ text-align: right;
494
+ }
495
+ .text-center {
496
+ text-align: center;
497
+ }
498
+ .page-header {
499
+ padding-bottom: 11px;
500
+ margin: 48px 0 24px;
501
+ border-bottom: 1px solid #eeeeee;
502
+ }
503
+ ul,
504
+ ol {
505
+ margin-top: 0;
506
+ margin-bottom: 12px;
507
+ }
508
+ ul ul,
509
+ ol ul,
510
+ ul ol,
511
+ ol ol {
512
+ margin-bottom: 0;
513
+ }
514
+ .list-unstyled {
515
+ padding-left: 0;
516
+ list-style: none;
517
+ }
518
+ .list-inline {
519
+ padding-left: 0;
520
+ list-style: none;
521
+ }
522
+ .list-inline > li {
523
+ display: inline-block;
524
+ padding-left: 5px;
525
+ padding-right: 5px;
526
+ }
527
+ .list-inline > li:first-child {
528
+ padding-left: 0;
529
+ }
530
+ dl {
531
+ margin-top: 0;
532
+ margin-bottom: 24px;
533
+ }
534
+ dt,
535
+ dd {
536
+ line-height: 1.5;
537
+ }
538
+ dt {
539
+ font-weight: bold;
540
+ }
541
+ dd {
542
+ margin-left: 0;
543
+ }
544
+ @media (min-width: 768px) {
545
+ .dl-horizontal dt {
546
+ float: left;
547
+ width: 160px;
548
+ clear: left;
549
+ text-align: right;
550
+ overflow: hidden;
551
+ text-overflow: ellipsis;
552
+ white-space: nowrap;
553
+ }
554
+ .dl-horizontal dd {
555
+ margin-left: 180px;
556
+ }
557
+ .dl-horizontal dd:before,
558
+ .dl-horizontal dd:after {
559
+ content: " ";
560
+ display: table;
561
+ }
562
+ .dl-horizontal dd:after {
563
+ clear: both;
564
+ }
565
+ .dl-horizontal dd:before,
566
+ .dl-horizontal dd:after {
567
+ content: " ";
568
+ display: table;
569
+ }
570
+ .dl-horizontal dd:after {
571
+ clear: both;
572
+ }
573
+ }
574
+ abbr[title],
575
+ abbr[data-original-title] {
576
+ cursor: help;
577
+ border-bottom: 1px dotted #999999;
578
+ }
579
+ .initialism {
580
+ font-size: 90%;
581
+ text-transform: uppercase;
582
+ }
583
+ blockquote {
584
+ padding: 12px 24px;
585
+ margin: 0 0 24px;
586
+ border-left: 5px solid #eeeeee;
587
+ }
588
+ blockquote p {
589
+ font-size: 20px;
590
+ font-weight: 300;
591
+ line-height: 1.25;
592
+ }
593
+ blockquote p:last-child {
594
+ margin-bottom: 0;
595
+ }
596
+ blockquote small,
597
+ blockquote .small {
598
+ display: block;
599
+ line-height: 1.5;
600
+ color: #999999;
601
+ }
602
+ blockquote small:before,
603
+ blockquote .small:before {
604
+ content: '\2014 \00A0';
605
+ }
606
+ blockquote.pull-right {
607
+ padding-right: 15px;
608
+ padding-left: 0;
609
+ border-right: 5px solid #eeeeee;
610
+ border-left: 0;
611
+ }
612
+ blockquote.pull-right p,
613
+ blockquote.pull-right small,
614
+ blockquote.pull-right .small {
615
+ text-align: right;
616
+ }
617
+ blockquote.pull-right small:before,
618
+ blockquote.pull-right .small:before {
619
+ content: '';
620
+ }
621
+ blockquote.pull-right small:after,
622
+ blockquote.pull-right .small:after {
623
+ content: '\00A0 \2014';
624
+ }
625
+ blockquote:before,
626
+ blockquote:after {
627
+ content: "";
628
+ }
629
+ address {
630
+ margin-bottom: 24px;
631
+ font-style: normal;
632
+ line-height: 1.5;
633
+ }
634
+ code,
635
+ kbd,
636
+ pre,
637
+ samp {
638
+ font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
639
+ }
640
+ code {
641
+ padding: 2px 4px;
642
+ font-size: 90%;
643
+ color: #c7254e;
644
+ background-color: #f9f2f4;
645
+ white-space: nowrap;
646
+ border-radius: 4px;
647
+ }
648
+ pre {
649
+ display: block;
650
+ padding: 11.5px;
651
+ margin: 0 0 12px;
652
+ font-size: 15px;
653
+ line-height: 1.5;
654
+ word-break: break-all;
655
+ word-wrap: break-word;
656
+ color: #333333;
657
+ background-color: #f5f5f5;
658
+ border: 1px solid #cccccc;
659
+ border-radius: 4px;
660
+ }
661
+ pre code {
662
+ padding: 0;
663
+ font-size: inherit;
664
+ color: inherit;
665
+ white-space: pre-wrap;
666
+ background-color: transparent;
667
+ border-radius: 0;
668
+ }
669
+ .pre-scrollable {
670
+ max-height: 340px;
671
+ overflow-y: scroll;
672
+ }
673
+ .container {
674
+ margin-right: auto;
675
+ margin-left: auto;
676
+ padding-left: 15px;
677
+ padding-right: 15px;
678
+ }
679
+ .container:before,
680
+ .container:after {
681
+ content: " ";
682
+ display: table;
683
+ }
684
+ .container:after {
685
+ clear: both;
686
+ }
687
+ .container:before,
688
+ .container:after {
689
+ content: " ";
690
+ display: table;
691
+ }
692
+ .container:after {
693
+ clear: both;
694
+ }
695
+ @media (min-width: 768px) {
696
+ .container {
697
+ width: 750px;
698
+ }
699
+ }
700
+ @media (min-width: 992px) {
701
+ .container {
702
+ width: 970px;
703
+ }
704
+ }
705
+ @media (min-width: 1200px) {
706
+ .container {
707
+ width: 1170px;
708
+ }
709
+ }
710
+ .row {
711
+ margin-left: -15px;
712
+ margin-right: -15px;
713
+ }
714
+ .row:before,
715
+ .row:after {
716
+ content: " ";
717
+ display: table;
718
+ }
719
+ .row:after {
720
+ clear: both;
721
+ }
722
+ .row:before,
723
+ .row:after {
724
+ content: " ";
725
+ display: table;
726
+ }
727
+ .row:after {
728
+ clear: both;
729
+ }
730
+ .col-xs-1, .col-sm-1, .col-md-1, .col-lg-1, .col-xs-2, .col-sm-2, .col-md-2, .col-lg-2, .col-xs-3, .col-sm-3, .col-md-3, .col-lg-3, .col-xs-4, .col-sm-4, .col-md-4, .col-lg-4, .col-xs-5, .col-sm-5, .col-md-5, .col-lg-5, .col-xs-6, .col-sm-6, .col-md-6, .col-lg-6, .col-xs-7, .col-sm-7, .col-md-7, .col-lg-7, .col-xs-8, .col-sm-8, .col-md-8, .col-lg-8, .col-xs-9, .col-sm-9, .col-md-9, .col-lg-9, .col-xs-10, .col-sm-10, .col-md-10, .col-lg-10, .col-xs-11, .col-sm-11, .col-md-11, .col-lg-11, .col-xs-12, .col-sm-12, .col-md-12, .col-lg-12 {
731
+ position: relative;
732
+ min-height: 1px;
733
+ padding-left: 15px;
734
+ padding-right: 15px;
735
+ }
736
+ .col-xs-1, .col-xs-2, .col-xs-3, .col-xs-4, .col-xs-5, .col-xs-6, .col-xs-7, .col-xs-8, .col-xs-9, .col-xs-10, .col-xs-11, .col-xs-12 {
737
+ float: left;
738
+ }
739
+ .col-xs-12 {
740
+ width: 100%;
741
+ }
742
+ .col-xs-11 {
743
+ width: 91.66666666666666%;
744
+ }
745
+ .col-xs-10 {
746
+ width: 83.33333333333334%;
747
+ }
748
+ .col-xs-9 {
749
+ width: 75%;
750
+ }
751
+ .col-xs-8 {
752
+ width: 66.66666666666666%;
753
+ }
754
+ .col-xs-7 {
755
+ width: 58.333333333333336%;
756
+ }
757
+ .col-xs-6 {
758
+ width: 50%;
759
+ }
760
+ .col-xs-5 {
761
+ width: 41.66666666666667%;
762
+ }
763
+ .col-xs-4 {
764
+ width: 33.33333333333333%;
765
+ }
766
+ .col-xs-3 {
767
+ width: 25%;
768
+ }
769
+ .col-xs-2 {
770
+ width: 16.666666666666664%;
771
+ }
772
+ .col-xs-1 {
773
+ width: 8.333333333333332%;
774
+ }
775
+ .col-xs-pull-12 {
776
+ right: 100%;
777
+ }
778
+ .col-xs-pull-11 {
779
+ right: 91.66666666666666%;
780
+ }
781
+ .col-xs-pull-10 {
782
+ right: 83.33333333333334%;
783
+ }
784
+ .col-xs-pull-9 {
785
+ right: 75%;
786
+ }
787
+ .col-xs-pull-8 {
788
+ right: 66.66666666666666%;
789
+ }
790
+ .col-xs-pull-7 {
791
+ right: 58.333333333333336%;
792
+ }
793
+ .col-xs-pull-6 {
794
+ right: 50%;
795
+ }
796
+ .col-xs-pull-5 {
797
+ right: 41.66666666666667%;
798
+ }
799
+ .col-xs-pull-4 {
800
+ right: 33.33333333333333%;
801
+ }
802
+ .col-xs-pull-3 {
803
+ right: 25%;
804
+ }
805
+ .col-xs-pull-2 {
806
+ right: 16.666666666666664%;
807
+ }
808
+ .col-xs-pull-1 {
809
+ right: 8.333333333333332%;
810
+ }
811
+ .col-xs-pull-0 {
812
+ right: 0%;
813
+ }
814
+ .col-xs-push-12 {
815
+ left: 100%;
816
+ }
817
+ .col-xs-push-11 {
818
+ left: 91.66666666666666%;
819
+ }
820
+ .col-xs-push-10 {
821
+ left: 83.33333333333334%;
822
+ }
823
+ .col-xs-push-9 {
824
+ left: 75%;
825
+ }
826
+ .col-xs-push-8 {
827
+ left: 66.66666666666666%;
828
+ }
829
+ .col-xs-push-7 {
830
+ left: 58.333333333333336%;
831
+ }
832
+ .col-xs-push-6 {
833
+ left: 50%;
834
+ }
835
+ .col-xs-push-5 {
836
+ left: 41.66666666666667%;
837
+ }
838
+ .col-xs-push-4 {
839
+ left: 33.33333333333333%;
840
+ }
841
+ .col-xs-push-3 {
842
+ left: 25%;
843
+ }
844
+ .col-xs-push-2 {
845
+ left: 16.666666666666664%;
846
+ }
847
+ .col-xs-push-1 {
848
+ left: 8.333333333333332%;
849
+ }
850
+ .col-xs-push-0 {
851
+ left: 0%;
852
+ }
853
+ .col-xs-offset-12 {
854
+ margin-left: 100%;
855
+ }
856
+ .col-xs-offset-11 {
857
+ margin-left: 91.66666666666666%;
858
+ }
859
+ .col-xs-offset-10 {
860
+ margin-left: 83.33333333333334%;
861
+ }
862
+ .col-xs-offset-9 {
863
+ margin-left: 75%;
864
+ }
865
+ .col-xs-offset-8 {
866
+ margin-left: 66.66666666666666%;
867
+ }
868
+ .col-xs-offset-7 {
869
+ margin-left: 58.333333333333336%;
870
+ }
871
+ .col-xs-offset-6 {
872
+ margin-left: 50%;
873
+ }
874
+ .col-xs-offset-5 {
875
+ margin-left: 41.66666666666667%;
876
+ }
877
+ .col-xs-offset-4 {
878
+ margin-left: 33.33333333333333%;
879
+ }
880
+ .col-xs-offset-3 {
881
+ margin-left: 25%;
882
+ }
883
+ .col-xs-offset-2 {
884
+ margin-left: 16.666666666666664%;
885
+ }
886
+ .col-xs-offset-1 {
887
+ margin-left: 8.333333333333332%;
888
+ }
889
+ .col-xs-offset-0 {
890
+ margin-left: 0%;
891
+ }
892
+ @media (min-width: 768px) {
893
+ .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12 {
894
+ float: left;
895
+ }
896
+ .col-sm-12 {
897
+ width: 100%;
898
+ }
899
+ .col-sm-11 {
900
+ width: 91.66666666666666%;
901
+ }
902
+ .col-sm-10 {
903
+ width: 83.33333333333334%;
904
+ }
905
+ .col-sm-9 {
906
+ width: 75%;
907
+ }
908
+ .col-sm-8 {
909
+ width: 66.66666666666666%;
910
+ }
911
+ .col-sm-7 {
912
+ width: 58.333333333333336%;
913
+ }
914
+ .col-sm-6 {
915
+ width: 50%;
916
+ }
917
+ .col-sm-5 {
918
+ width: 41.66666666666667%;
919
+ }
920
+ .col-sm-4 {
921
+ width: 33.33333333333333%;
922
+ }
923
+ .col-sm-3 {
924
+ width: 25%;
925
+ }
926
+ .col-sm-2 {
927
+ width: 16.666666666666664%;
928
+ }
929
+ .col-sm-1 {
930
+ width: 8.333333333333332%;
931
+ }
932
+ .col-sm-pull-12 {
933
+ right: 100%;
934
+ }
935
+ .col-sm-pull-11 {
936
+ right: 91.66666666666666%;
937
+ }
938
+ .col-sm-pull-10 {
939
+ right: 83.33333333333334%;
940
+ }
941
+ .col-sm-pull-9 {
942
+ right: 75%;
943
+ }
944
+ .col-sm-pull-8 {
945
+ right: 66.66666666666666%;
946
+ }
947
+ .col-sm-pull-7 {
948
+ right: 58.333333333333336%;
949
+ }
950
+ .col-sm-pull-6 {
951
+ right: 50%;
952
+ }
953
+ .col-sm-pull-5 {
954
+ right: 41.66666666666667%;
955
+ }
956
+ .col-sm-pull-4 {
957
+ right: 33.33333333333333%;
958
+ }
959
+ .col-sm-pull-3 {
960
+ right: 25%;
961
+ }
962
+ .col-sm-pull-2 {
963
+ right: 16.666666666666664%;
964
+ }
965
+ .col-sm-pull-1 {
966
+ right: 8.333333333333332%;
967
+ }
968
+ .col-sm-pull-0 {
969
+ right: 0%;
970
+ }
971
+ .col-sm-push-12 {
972
+ left: 100%;
973
+ }
974
+ .col-sm-push-11 {
975
+ left: 91.66666666666666%;
976
+ }
977
+ .col-sm-push-10 {
978
+ left: 83.33333333333334%;
979
+ }
980
+ .col-sm-push-9 {
981
+ left: 75%;
982
+ }
983
+ .col-sm-push-8 {
984
+ left: 66.66666666666666%;
985
+ }
986
+ .col-sm-push-7 {
987
+ left: 58.333333333333336%;
988
+ }
989
+ .col-sm-push-6 {
990
+ left: 50%;
991
+ }
992
+ .col-sm-push-5 {
993
+ left: 41.66666666666667%;
994
+ }
995
+ .col-sm-push-4 {
996
+ left: 33.33333333333333%;
997
+ }
998
+ .col-sm-push-3 {
999
+ left: 25%;
1000
+ }
1001
+ .col-sm-push-2 {
1002
+ left: 16.666666666666664%;
1003
+ }
1004
+ .col-sm-push-1 {
1005
+ left: 8.333333333333332%;
1006
+ }
1007
+ .col-sm-push-0 {
1008
+ left: 0%;
1009
+ }
1010
+ .col-sm-offset-12 {
1011
+ margin-left: 100%;
1012
+ }
1013
+ .col-sm-offset-11 {
1014
+ margin-left: 91.66666666666666%;
1015
+ }
1016
+ .col-sm-offset-10 {
1017
+ margin-left: 83.33333333333334%;
1018
+ }
1019
+ .col-sm-offset-9 {
1020
+ margin-left: 75%;
1021
+ }
1022
+ .col-sm-offset-8 {
1023
+ margin-left: 66.66666666666666%;
1024
+ }
1025
+ .col-sm-offset-7 {
1026
+ margin-left: 58.333333333333336%;
1027
+ }
1028
+ .col-sm-offset-6 {
1029
+ margin-left: 50%;
1030
+ }
1031
+ .col-sm-offset-5 {
1032
+ margin-left: 41.66666666666667%;
1033
+ }
1034
+ .col-sm-offset-4 {
1035
+ margin-left: 33.33333333333333%;
1036
+ }
1037
+ .col-sm-offset-3 {
1038
+ margin-left: 25%;
1039
+ }
1040
+ .col-sm-offset-2 {
1041
+ margin-left: 16.666666666666664%;
1042
+ }
1043
+ .col-sm-offset-1 {
1044
+ margin-left: 8.333333333333332%;
1045
+ }
1046
+ .col-sm-offset-0 {
1047
+ margin-left: 0%;
1048
+ }
1049
+ }
1050
+ @media (min-width: 992px) {
1051
+ .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12 {
1052
+ float: left;
1053
+ }
1054
+ .col-md-12 {
1055
+ width: 100%;
1056
+ }
1057
+ .col-md-11 {
1058
+ width: 91.66666666666666%;
1059
+ }
1060
+ .col-md-10 {
1061
+ width: 83.33333333333334%;
1062
+ }
1063
+ .col-md-9 {
1064
+ width: 75%;
1065
+ }
1066
+ .col-md-8 {
1067
+ width: 66.66666666666666%;
1068
+ }
1069
+ .col-md-7 {
1070
+ width: 58.333333333333336%;
1071
+ }
1072
+ .col-md-6 {
1073
+ width: 50%;
1074
+ }
1075
+ .col-md-5 {
1076
+ width: 41.66666666666667%;
1077
+ }
1078
+ .col-md-4 {
1079
+ width: 33.33333333333333%;
1080
+ }
1081
+ .col-md-3 {
1082
+ width: 25%;
1083
+ }
1084
+ .col-md-2 {
1085
+ width: 16.666666666666664%;
1086
+ }
1087
+ .col-md-1 {
1088
+ width: 8.333333333333332%;
1089
+ }
1090
+ .col-md-pull-12 {
1091
+ right: 100%;
1092
+ }
1093
+ .col-md-pull-11 {
1094
+ right: 91.66666666666666%;
1095
+ }
1096
+ .col-md-pull-10 {
1097
+ right: 83.33333333333334%;
1098
+ }
1099
+ .col-md-pull-9 {
1100
+ right: 75%;
1101
+ }
1102
+ .col-md-pull-8 {
1103
+ right: 66.66666666666666%;
1104
+ }
1105
+ .col-md-pull-7 {
1106
+ right: 58.333333333333336%;
1107
+ }
1108
+ .col-md-pull-6 {
1109
+ right: 50%;
1110
+ }
1111
+ .col-md-pull-5 {
1112
+ right: 41.66666666666667%;
1113
+ }
1114
+ .col-md-pull-4 {
1115
+ right: 33.33333333333333%;
1116
+ }
1117
+ .col-md-pull-3 {
1118
+ right: 25%;
1119
+ }
1120
+ .col-md-pull-2 {
1121
+ right: 16.666666666666664%;
1122
+ }
1123
+ .col-md-pull-1 {
1124
+ right: 8.333333333333332%;
1125
+ }
1126
+ .col-md-pull-0 {
1127
+ right: 0%;
1128
+ }
1129
+ .col-md-push-12 {
1130
+ left: 100%;
1131
+ }
1132
+ .col-md-push-11 {
1133
+ left: 91.66666666666666%;
1134
+ }
1135
+ .col-md-push-10 {
1136
+ left: 83.33333333333334%;
1137
+ }
1138
+ .col-md-push-9 {
1139
+ left: 75%;
1140
+ }
1141
+ .col-md-push-8 {
1142
+ left: 66.66666666666666%;
1143
+ }
1144
+ .col-md-push-7 {
1145
+ left: 58.333333333333336%;
1146
+ }
1147
+ .col-md-push-6 {
1148
+ left: 50%;
1149
+ }
1150
+ .col-md-push-5 {
1151
+ left: 41.66666666666667%;
1152
+ }
1153
+ .col-md-push-4 {
1154
+ left: 33.33333333333333%;
1155
+ }
1156
+ .col-md-push-3 {
1157
+ left: 25%;
1158
+ }
1159
+ .col-md-push-2 {
1160
+ left: 16.666666666666664%;
1161
+ }
1162
+ .col-md-push-1 {
1163
+ left: 8.333333333333332%;
1164
+ }
1165
+ .col-md-push-0 {
1166
+ left: 0%;
1167
+ }
1168
+ .col-md-offset-12 {
1169
+ margin-left: 100%;
1170
+ }
1171
+ .col-md-offset-11 {
1172
+ margin-left: 91.66666666666666%;
1173
+ }
1174
+ .col-md-offset-10 {
1175
+ margin-left: 83.33333333333334%;
1176
+ }
1177
+ .col-md-offset-9 {
1178
+ margin-left: 75%;
1179
+ }
1180
+ .col-md-offset-8 {
1181
+ margin-left: 66.66666666666666%;
1182
+ }
1183
+ .col-md-offset-7 {
1184
+ margin-left: 58.333333333333336%;
1185
+ }
1186
+ .col-md-offset-6 {
1187
+ margin-left: 50%;
1188
+ }
1189
+ .col-md-offset-5 {
1190
+ margin-left: 41.66666666666667%;
1191
+ }
1192
+ .col-md-offset-4 {
1193
+ margin-left: 33.33333333333333%;
1194
+ }
1195
+ .col-md-offset-3 {
1196
+ margin-left: 25%;
1197
+ }
1198
+ .col-md-offset-2 {
1199
+ margin-left: 16.666666666666664%;
1200
+ }
1201
+ .col-md-offset-1 {
1202
+ margin-left: 8.333333333333332%;
1203
+ }
1204
+ .col-md-offset-0 {
1205
+ margin-left: 0%;
1206
+ }
1207
+ }
1208
+ @media (min-width: 1200px) {
1209
+ .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12 {
1210
+ float: left;
1211
+ }
1212
+ .col-lg-12 {
1213
+ width: 100%;
1214
+ }
1215
+ .col-lg-11 {
1216
+ width: 91.66666666666666%;
1217
+ }
1218
+ .col-lg-10 {
1219
+ width: 83.33333333333334%;
1220
+ }
1221
+ .col-lg-9 {
1222
+ width: 75%;
1223
+ }
1224
+ .col-lg-8 {
1225
+ width: 66.66666666666666%;
1226
+ }
1227
+ .col-lg-7 {
1228
+ width: 58.333333333333336%;
1229
+ }
1230
+ .col-lg-6 {
1231
+ width: 50%;
1232
+ }
1233
+ .col-lg-5 {
1234
+ width: 41.66666666666667%;
1235
+ }
1236
+ .col-lg-4 {
1237
+ width: 33.33333333333333%;
1238
+ }
1239
+ .col-lg-3 {
1240
+ width: 25%;
1241
+ }
1242
+ .col-lg-2 {
1243
+ width: 16.666666666666664%;
1244
+ }
1245
+ .col-lg-1 {
1246
+ width: 8.333333333333332%;
1247
+ }
1248
+ .col-lg-pull-12 {
1249
+ right: 100%;
1250
+ }
1251
+ .col-lg-pull-11 {
1252
+ right: 91.66666666666666%;
1253
+ }
1254
+ .col-lg-pull-10 {
1255
+ right: 83.33333333333334%;
1256
+ }
1257
+ .col-lg-pull-9 {
1258
+ right: 75%;
1259
+ }
1260
+ .col-lg-pull-8 {
1261
+ right: 66.66666666666666%;
1262
+ }
1263
+ .col-lg-pull-7 {
1264
+ right: 58.333333333333336%;
1265
+ }
1266
+ .col-lg-pull-6 {
1267
+ right: 50%;
1268
+ }
1269
+ .col-lg-pull-5 {
1270
+ right: 41.66666666666667%;
1271
+ }
1272
+ .col-lg-pull-4 {
1273
+ right: 33.33333333333333%;
1274
+ }
1275
+ .col-lg-pull-3 {
1276
+ right: 25%;
1277
+ }
1278
+ .col-lg-pull-2 {
1279
+ right: 16.666666666666664%;
1280
+ }
1281
+ .col-lg-pull-1 {
1282
+ right: 8.333333333333332%;
1283
+ }
1284
+ .col-lg-pull-0 {
1285
+ right: 0%;
1286
+ }
1287
+ .col-lg-push-12 {
1288
+ left: 100%;
1289
+ }
1290
+ .col-lg-push-11 {
1291
+ left: 91.66666666666666%;
1292
+ }
1293
+ .col-lg-push-10 {
1294
+ left: 83.33333333333334%;
1295
+ }
1296
+ .col-lg-push-9 {
1297
+ left: 75%;
1298
+ }
1299
+ .col-lg-push-8 {
1300
+ left: 66.66666666666666%;
1301
+ }
1302
+ .col-lg-push-7 {
1303
+ left: 58.333333333333336%;
1304
+ }
1305
+ .col-lg-push-6 {
1306
+ left: 50%;
1307
+ }
1308
+ .col-lg-push-5 {
1309
+ left: 41.66666666666667%;
1310
+ }
1311
+ .col-lg-push-4 {
1312
+ left: 33.33333333333333%;
1313
+ }
1314
+ .col-lg-push-3 {
1315
+ left: 25%;
1316
+ }
1317
+ .col-lg-push-2 {
1318
+ left: 16.666666666666664%;
1319
+ }
1320
+ .col-lg-push-1 {
1321
+ left: 8.333333333333332%;
1322
+ }
1323
+ .col-lg-push-0 {
1324
+ left: 0%;
1325
+ }
1326
+ .col-lg-offset-12 {
1327
+ margin-left: 100%;
1328
+ }
1329
+ .col-lg-offset-11 {
1330
+ margin-left: 91.66666666666666%;
1331
+ }
1332
+ .col-lg-offset-10 {
1333
+ margin-left: 83.33333333333334%;
1334
+ }
1335
+ .col-lg-offset-9 {
1336
+ margin-left: 75%;
1337
+ }
1338
+ .col-lg-offset-8 {
1339
+ margin-left: 66.66666666666666%;
1340
+ }
1341
+ .col-lg-offset-7 {
1342
+ margin-left: 58.333333333333336%;
1343
+ }
1344
+ .col-lg-offset-6 {
1345
+ margin-left: 50%;
1346
+ }
1347
+ .col-lg-offset-5 {
1348
+ margin-left: 41.66666666666667%;
1349
+ }
1350
+ .col-lg-offset-4 {
1351
+ margin-left: 33.33333333333333%;
1352
+ }
1353
+ .col-lg-offset-3 {
1354
+ margin-left: 25%;
1355
+ }
1356
+ .col-lg-offset-2 {
1357
+ margin-left: 16.666666666666664%;
1358
+ }
1359
+ .col-lg-offset-1 {
1360
+ margin-left: 8.333333333333332%;
1361
+ }
1362
+ .col-lg-offset-0 {
1363
+ margin-left: 0%;
1364
+ }
1365
+ }
1366
+ table {
1367
+ max-width: 100%;
1368
+ background-color: transparent;
1369
+ }
1370
+ th {
1371
+ text-align: left;
1372
+ }
1373
+ .table {
1374
+ width: 100%;
1375
+ margin-bottom: 24px;
1376
+ }
1377
+ .table > thead > tr > th,
1378
+ .table > tbody > tr > th,
1379
+ .table > tfoot > tr > th,
1380
+ .table > thead > tr > td,
1381
+ .table > tbody > tr > td,
1382
+ .table > tfoot > tr > td {
1383
+ padding: 8px;
1384
+ line-height: 1.5;
1385
+ vertical-align: top;
1386
+ border-top: 1px solid #dddddd;
1387
+ }
1388
+ .table > thead > tr > th {
1389
+ vertical-align: bottom;
1390
+ border-bottom: 2px solid #dddddd;
1391
+ }
1392
+ .table > caption + thead > tr:first-child > th,
1393
+ .table > colgroup + thead > tr:first-child > th,
1394
+ .table > thead:first-child > tr:first-child > th,
1395
+ .table > caption + thead > tr:first-child > td,
1396
+ .table > colgroup + thead > tr:first-child > td,
1397
+ .table > thead:first-child > tr:first-child > td {
1398
+ border-top: 0;
1399
+ }
1400
+ .table > tbody + tbody {
1401
+ border-top: 2px solid #dddddd;
1402
+ }
1403
+ .table .table {
1404
+ background-color: #ffffff;
1405
+ }
1406
+ .table-condensed > thead > tr > th,
1407
+ .table-condensed > tbody > tr > th,
1408
+ .table-condensed > tfoot > tr > th,
1409
+ .table-condensed > thead > tr > td,
1410
+ .table-condensed > tbody > tr > td,
1411
+ .table-condensed > tfoot > tr > td {
1412
+ padding: 5px;
1413
+ }
1414
+ .table-bordered {
1415
+ border: 1px solid #dddddd;
1416
+ }
1417
+ .table-bordered > thead > tr > th,
1418
+ .table-bordered > tbody > tr > th,
1419
+ .table-bordered > tfoot > tr > th,
1420
+ .table-bordered > thead > tr > td,
1421
+ .table-bordered > tbody > tr > td,
1422
+ .table-bordered > tfoot > tr > td {
1423
+ border: 1px solid #dddddd;
1424
+ }
1425
+ .table-bordered > thead > tr > th,
1426
+ .table-bordered > thead > tr > td {
1427
+ border-bottom-width: 2px;
1428
+ }
1429
+ .table-striped > tbody > tr:nth-child(odd) > td,
1430
+ .table-striped > tbody > tr:nth-child(odd) > th {
1431
+ background-color: #f9f9f9;
1432
+ }
1433
+ .table-hover > tbody > tr:hover > td,
1434
+ .table-hover > tbody > tr:hover > th {
1435
+ background-color: #f5f5f5;
1436
+ }
1437
+ table col[class*="col-"] {
1438
+ position: static;
1439
+ float: none;
1440
+ display: table-column;
1441
+ }
1442
+ table td[class*="col-"],
1443
+ table th[class*="col-"] {
1444
+ float: none;
1445
+ display: table-cell;
1446
+ }
1447
+ .table > thead > tr > .active,
1448
+ .table > tbody > tr > .active,
1449
+ .table > tfoot > tr > .active,
1450
+ .table > thead > .active > td,
1451
+ .table > tbody > .active > td,
1452
+ .table > tfoot > .active > td,
1453
+ .table > thead > .active > th,
1454
+ .table > tbody > .active > th,
1455
+ .table > tfoot > .active > th {
1456
+ background-color: #f5f5f5;
1457
+ }
1458
+ .table-hover > tbody > tr > .active:hover,
1459
+ .table-hover > tbody > .active:hover > td,
1460
+ .table-hover > tbody > .active:hover > th {
1461
+ background-color: #e8e8e8;
1462
+ }
1463
+ .table > thead > tr > .success,
1464
+ .table > tbody > tr > .success,
1465
+ .table > tfoot > tr > .success,
1466
+ .table > thead > .success > td,
1467
+ .table > tbody > .success > td,
1468
+ .table > tfoot > .success > td,
1469
+ .table > thead > .success > th,
1470
+ .table > tbody > .success > th,
1471
+ .table > tfoot > .success > th {
1472
+ background-color: #dff0d8;
1473
+ }
1474
+ .table-hover > tbody > tr > .success:hover,
1475
+ .table-hover > tbody > .success:hover > td,
1476
+ .table-hover > tbody > .success:hover > th {
1477
+ background-color: #d0e9c6;
1478
+ }
1479
+ .table > thead > tr > .danger,
1480
+ .table > tbody > tr > .danger,
1481
+ .table > tfoot > tr > .danger,
1482
+ .table > thead > .danger > td,
1483
+ .table > tbody > .danger > td,
1484
+ .table > tfoot > .danger > td,
1485
+ .table > thead > .danger > th,
1486
+ .table > tbody > .danger > th,
1487
+ .table > tfoot > .danger > th {
1488
+ background-color: #f2dede;
1489
+ }
1490
+ .table-hover > tbody > tr > .danger:hover,
1491
+ .table-hover > tbody > .danger:hover > td,
1492
+ .table-hover > tbody > .danger:hover > th {
1493
+ background-color: #ebcccc;
1494
+ }
1495
+ .table > thead > tr > .warning,
1496
+ .table > tbody > tr > .warning,
1497
+ .table > tfoot > tr > .warning,
1498
+ .table > thead > .warning > td,
1499
+ .table > tbody > .warning > td,
1500
+ .table > tfoot > .warning > td,
1501
+ .table > thead > .warning > th,
1502
+ .table > tbody > .warning > th,
1503
+ .table > tfoot > .warning > th {
1504
+ background-color: #fcf8e3;
1505
+ }
1506
+ .table-hover > tbody > tr > .warning:hover,
1507
+ .table-hover > tbody > .warning:hover > td,
1508
+ .table-hover > tbody > .warning:hover > th {
1509
+ background-color: #faf2cc;
1510
+ }
1511
+ @media (max-width: 767px) {
1512
+ .table-responsive {
1513
+ width: 100%;
1514
+ margin-bottom: 18px;
1515
+ overflow-y: hidden;
1516
+ overflow-x: scroll;
1517
+ -ms-overflow-style: -ms-autohiding-scrollbar;
1518
+ border: 1px solid #dddddd;
1519
+ -webkit-overflow-scrolling: touch;
1520
+ }
1521
+ .table-responsive > .table {
1522
+ margin-bottom: 0;
1523
+ }
1524
+ .table-responsive > .table > thead > tr > th,
1525
+ .table-responsive > .table > tbody > tr > th,
1526
+ .table-responsive > .table > tfoot > tr > th,
1527
+ .table-responsive > .table > thead > tr > td,
1528
+ .table-responsive > .table > tbody > tr > td,
1529
+ .table-responsive > .table > tfoot > tr > td {
1530
+ white-space: nowrap;
1531
+ }
1532
+ .table-responsive > .table-bordered {
1533
+ border: 0;
1534
+ }
1535
+ .table-responsive > .table-bordered > thead > tr > th:first-child,
1536
+ .table-responsive > .table-bordered > tbody > tr > th:first-child,
1537
+ .table-responsive > .table-bordered > tfoot > tr > th:first-child,
1538
+ .table-responsive > .table-bordered > thead > tr > td:first-child,
1539
+ .table-responsive > .table-bordered > tbody > tr > td:first-child,
1540
+ .table-responsive > .table-bordered > tfoot > tr > td:first-child {
1541
+ border-left: 0;
1542
+ }
1543
+ .table-responsive > .table-bordered > thead > tr > th:last-child,
1544
+ .table-responsive > .table-bordered > tbody > tr > th:last-child,
1545
+ .table-responsive > .table-bordered > tfoot > tr > th:last-child,
1546
+ .table-responsive > .table-bordered > thead > tr > td:last-child,
1547
+ .table-responsive > .table-bordered > tbody > tr > td:last-child,
1548
+ .table-responsive > .table-bordered > tfoot > tr > td:last-child {
1549
+ border-right: 0;
1550
+ }
1551
+ .table-responsive > .table-bordered > tbody > tr:last-child > th,
1552
+ .table-responsive > .table-bordered > tfoot > tr:last-child > th,
1553
+ .table-responsive > .table-bordered > tbody > tr:last-child > td,
1554
+ .table-responsive > .table-bordered > tfoot > tr:last-child > td {
1555
+ border-bottom: 0;
1556
+ }
1557
+ }
1558
+ fieldset {
1559
+ padding: 0;
1560
+ margin: 0;
1561
+ border: 0;
1562
+ }
1563
+ legend {
1564
+ display: block;
1565
+ width: 100%;
1566
+ padding: 0;
1567
+ margin-bottom: 24px;
1568
+ font-size: 24px;
1569
+ line-height: inherit;
1570
+ color: #333333;
1571
+ border: 0;
1572
+ border-bottom: 1px solid #e5e5e5;
1573
+ }
1574
+ label {
1575
+ display: inline-block;
1576
+ margin-bottom: 5px;
1577
+ font-weight: bold;
1578
+ }
1579
+ input[type="search"] {
1580
+ -webkit-box-sizing: border-box;
1581
+ -moz-box-sizing: border-box;
1582
+ box-sizing: border-box;
1583
+ }
1584
+ input[type="radio"],
1585
+ input[type="checkbox"] {
1586
+ margin: 4px 0 0;
1587
+ margin-top: 1px \9;
1588
+ /* IE8-9 */
1589
+
1590
+ line-height: normal;
1591
+ }
1592
+ input[type="file"] {
1593
+ display: block;
1594
+ }
1595
+ select[multiple],
1596
+ select[size] {
1597
+ height: auto;
1598
+ }
1599
+ select optgroup {
1600
+ font-size: inherit;
1601
+ font-style: inherit;
1602
+ font-family: inherit;
1603
+ }
1604
+ input[type="file"]:focus,
1605
+ input[type="radio"]:focus,
1606
+ input[type="checkbox"]:focus {
1607
+ outline: thin dotted;
1608
+ outline: 5px auto -webkit-focus-ring-color;
1609
+ outline-offset: -2px;
1610
+ }
1611
+ input[type="number"]::-webkit-outer-spin-button,
1612
+ input[type="number"]::-webkit-inner-spin-button {
1613
+ height: auto;
1614
+ }
1615
+ output {
1616
+ display: block;
1617
+ padding-top: 7px;
1618
+ font-size: 16px;
1619
+ line-height: 1.5;
1620
+ color: #555555;
1621
+ vertical-align: middle;
1622
+ }
1623
+ .form-control {
1624
+ display: block;
1625
+ width: 100%;
1626
+ height: 38px;
1627
+ padding: 6px 12px;
1628
+ font-size: 16px;
1629
+ line-height: 1.5;
1630
+ color: #555555;
1631
+ vertical-align: middle;
1632
+ background-color: #ffffff;
1633
+ background-image: none;
1634
+ border: 1px solid #cccccc;
1635
+ border-radius: 4px;
1636
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1637
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1638
+ -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1639
+ transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
1640
+ }
1641
+ .form-control:focus {
1642
+ border-color: #66afe9;
1643
+ outline: 0;
1644
+ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1645
+ box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102, 175, 233, 0.6);
1646
+ }
1647
+ .form-control:-moz-placeholder {
1648
+ color: #999999;
1649
+ }
1650
+ .form-control::-moz-placeholder {
1651
+ color: #999999;
1652
+ opacity: 1;
1653
+ }
1654
+ .form-control:-ms-input-placeholder {
1655
+ color: #999999;
1656
+ }
1657
+ .form-control::-webkit-input-placeholder {
1658
+ color: #999999;
1659
+ }
1660
+ .form-control[disabled],
1661
+ .form-control[readonly],
1662
+ fieldset[disabled] .form-control {
1663
+ cursor: not-allowed;
1664
+ background-color: #eeeeee;
1665
+ }
1666
+ textarea.form-control {
1667
+ height: auto;
1668
+ }
1669
+ .form-group {
1670
+ margin-bottom: 15px;
1671
+ }
1672
+ .radio,
1673
+ .checkbox {
1674
+ display: block;
1675
+ min-height: 24px;
1676
+ margin-top: 10px;
1677
+ margin-bottom: 10px;
1678
+ padding-left: 20px;
1679
+ vertical-align: middle;
1680
+ }
1681
+ .radio label,
1682
+ .checkbox label {
1683
+ display: inline;
1684
+ margin-bottom: 0;
1685
+ font-weight: normal;
1686
+ cursor: pointer;
1687
+ }
1688
+ .radio input[type="radio"],
1689
+ .radio-inline input[type="radio"],
1690
+ .checkbox input[type="checkbox"],
1691
+ .checkbox-inline input[type="checkbox"] {
1692
+ float: left;
1693
+ margin-left: -20px;
1694
+ }
1695
+ .radio + .radio,
1696
+ .checkbox + .checkbox {
1697
+ margin-top: -5px;
1698
+ }
1699
+ .radio-inline,
1700
+ .checkbox-inline {
1701
+ display: inline-block;
1702
+ padding-left: 20px;
1703
+ margin-bottom: 0;
1704
+ vertical-align: middle;
1705
+ font-weight: normal;
1706
+ cursor: pointer;
1707
+ }
1708
+ .radio-inline + .radio-inline,
1709
+ .checkbox-inline + .checkbox-inline {
1710
+ margin-top: 0;
1711
+ margin-left: 10px;
1712
+ }
1713
+ input[type="radio"][disabled],
1714
+ input[type="checkbox"][disabled],
1715
+ .radio[disabled],
1716
+ .radio-inline[disabled],
1717
+ .checkbox[disabled],
1718
+ .checkbox-inline[disabled],
1719
+ fieldset[disabled] input[type="radio"],
1720
+ fieldset[disabled] input[type="checkbox"],
1721
+ fieldset[disabled] .radio,
1722
+ fieldset[disabled] .radio-inline,
1723
+ fieldset[disabled] .checkbox,
1724
+ fieldset[disabled] .checkbox-inline {
1725
+ cursor: not-allowed;
1726
+ }
1727
+ .input-sm {
1728
+ height: 29px;
1729
+ padding: 5px 10px;
1730
+ font-size: 14px;
1731
+ line-height: 1.25;
1732
+ border-radius: 3px;
1733
+ }
1734
+ select.input-sm {
1735
+ height: 29px;
1736
+ line-height: 29px;
1737
+ }
1738
+ textarea.input-sm {
1739
+ height: auto;
1740
+ }
1741
+ .input-lg {
1742
+ height: 57px;
1743
+ padding: 10px 16px;
1744
+ font-size: 20px;
1745
+ line-height: 1.75;
1746
+ border-radius: 6px;
1747
+ }
1748
+ select.input-lg {
1749
+ height: 57px;
1750
+ line-height: 57px;
1751
+ }
1752
+ textarea.input-lg {
1753
+ height: auto;
1754
+ }
1755
+ .has-warning .help-block,
1756
+ .has-warning .control-label,
1757
+ .has-warning .radio,
1758
+ .has-warning .checkbox,
1759
+ .has-warning .radio-inline,
1760
+ .has-warning .checkbox-inline {
1761
+ color: #8a6d3b;
1762
+ }
1763
+ .has-warning .form-control {
1764
+ border-color: #8a6d3b;
1765
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1766
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1767
+ }
1768
+ .has-warning .form-control:focus {
1769
+ border-color: #66512c;
1770
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1771
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #c0a16b;
1772
+ }
1773
+ .has-warning .input-group-addon {
1774
+ color: #8a6d3b;
1775
+ border-color: #8a6d3b;
1776
+ background-color: #fcf8e3;
1777
+ }
1778
+ .has-error .help-block,
1779
+ .has-error .control-label,
1780
+ .has-error .radio,
1781
+ .has-error .checkbox,
1782
+ .has-error .radio-inline,
1783
+ .has-error .checkbox-inline {
1784
+ color: #a94442;
1785
+ }
1786
+ .has-error .form-control {
1787
+ border-color: #a94442;
1788
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1789
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1790
+ }
1791
+ .has-error .form-control:focus {
1792
+ border-color: #843534;
1793
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1794
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #ce8483;
1795
+ }
1796
+ .has-error .input-group-addon {
1797
+ color: #a94442;
1798
+ border-color: #a94442;
1799
+ background-color: #f2dede;
1800
+ }
1801
+ .has-success .help-block,
1802
+ .has-success .control-label,
1803
+ .has-success .radio,
1804
+ .has-success .checkbox,
1805
+ .has-success .radio-inline,
1806
+ .has-success .checkbox-inline {
1807
+ color: #3c763d;
1808
+ }
1809
+ .has-success .form-control {
1810
+ border-color: #3c763d;
1811
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1812
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
1813
+ }
1814
+ .has-success .form-control:focus {
1815
+ border-color: #2b542c;
1816
+ -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1817
+ box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #67b168;
1818
+ }
1819
+ .has-success .input-group-addon {
1820
+ color: #3c763d;
1821
+ border-color: #3c763d;
1822
+ background-color: #dff0d8;
1823
+ }
1824
+ .form-control-static {
1825
+ margin-bottom: 0;
1826
+ }
1827
+ .help-block {
1828
+ display: block;
1829
+ margin-top: 5px;
1830
+ margin-bottom: 10px;
1831
+ color: #737373;
1832
+ }
1833
+ @media (min-width: 768px) {
1834
+ .form-inline .form-group {
1835
+ display: inline-block;
1836
+ margin-bottom: 0;
1837
+ vertical-align: middle;
1838
+ }
1839
+ .form-inline .form-control {
1840
+ display: inline-block;
1841
+ }
1842
+ .form-inline select.form-control {
1843
+ width: auto;
1844
+ }
1845
+ .form-inline .radio,
1846
+ .form-inline .checkbox {
1847
+ display: inline-block;
1848
+ margin-top: 0;
1849
+ margin-bottom: 0;
1850
+ padding-left: 0;
1851
+ }
1852
+ .form-inline .radio input[type="radio"],
1853
+ .form-inline .checkbox input[type="checkbox"] {
1854
+ float: none;
1855
+ margin-left: 0;
1856
+ }
1857
+ }
1858
+ .form-horizontal .control-label,
1859
+ .form-horizontal .radio,
1860
+ .form-horizontal .checkbox,
1861
+ .form-horizontal .radio-inline,
1862
+ .form-horizontal .checkbox-inline {
1863
+ margin-top: 0;
1864
+ margin-bottom: 0;
1865
+ padding-top: 7px;
1866
+ }
1867
+ .form-horizontal .radio,
1868
+ .form-horizontal .checkbox {
1869
+ min-height: 31px;
1870
+ }
1871
+ .form-horizontal .form-group {
1872
+ margin-left: -15px;
1873
+ margin-right: -15px;
1874
+ }
1875
+ .form-horizontal .form-group:before,
1876
+ .form-horizontal .form-group:after {
1877
+ content: " ";
1878
+ display: table;
1879
+ }
1880
+ .form-horizontal .form-group:after {
1881
+ clear: both;
1882
+ }
1883
+ .form-horizontal .form-group:before,
1884
+ .form-horizontal .form-group:after {
1885
+ content: " ";
1886
+ display: table;
1887
+ }
1888
+ .form-horizontal .form-group:after {
1889
+ clear: both;
1890
+ }
1891
+ .form-horizontal .form-control-static {
1892
+ padding-top: 7px;
1893
+ }
1894
+ @media (min-width: 768px) {
1895
+ .form-horizontal .control-label {
1896
+ text-align: right;
1897
+ }
1898
+ }
1899
+ .btn {
1900
+ display: inline-block;
1901
+ margin-bottom: 0;
1902
+ font-weight: normal;
1903
+ text-align: center;
1904
+ vertical-align: middle;
1905
+ cursor: pointer;
1906
+ background-image: none;
1907
+ border: 1px solid transparent;
1908
+ white-space: nowrap;
1909
+ padding: 6px 12px;
1910
+ font-size: 16px;
1911
+ line-height: 1.5;
1912
+ border-radius: 4px;
1913
+ -webkit-user-select: none;
1914
+ -moz-user-select: none;
1915
+ -ms-user-select: none;
1916
+ -o-user-select: none;
1917
+ user-select: none;
1918
+ }
1919
+ .btn:focus {
1920
+ outline: thin dotted;
1921
+ outline: 5px auto -webkit-focus-ring-color;
1922
+ outline-offset: -2px;
1923
+ }
1924
+ .btn:hover,
1925
+ .btn:focus {
1926
+ color: #333333;
1927
+ text-decoration: none;
1928
+ }
1929
+ .btn:active,
1930
+ .btn.active {
1931
+ outline: 0;
1932
+ background-image: none;
1933
+ -webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
1934
+ box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
1935
+ }
1936