middleman-presentation-helpers 0.0.7 → 0.1.0.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (44) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +0 -2
  3. data/.rubocop.yml +45 -4
  4. data/README.md +23 -2
  5. data/Rakefile +6 -2
  6. data/features/image_gallery.feature +3 -4
  7. data/features/metadata.feature +40 -0
  8. data/features/step_definitions.rb +0 -1
  9. data/features/support/aruba.rb +1 -1
  10. data/features/support/ci.rb +1 -1
  11. data/features/support/env.rb +1 -1
  12. data/lib/middleman-presentation-helpers.rb +24 -0
  13. data/lib/middleman-presentation-helpers/helpers/image.rb +20 -0
  14. data/lib/{middleman-presentation → middleman-presentation-helpers}/helpers/image_gallery.rb +9 -7
  15. data/lib/middleman-presentation-helpers/helpers/metadata.rb +29 -0
  16. data/lib/{middleman-presentation → middleman-presentation-helpers}/helpers/slides.rb +6 -4
  17. data/lib/middleman-presentation-helpers/plugins/footer_plugin.rb +17 -0
  18. data/lib/middleman-presentation-helpers/plugins/highlight_plugin.rb +23 -0
  19. data/lib/middleman-presentation-helpers/plugins/image_gallery_plugin.rb +25 -0
  20. data/lib/middleman-presentation-helpers/plugins/images_plugin.rb +19 -0
  21. data/lib/{middleman-presentation/helpers/plugins/footer_plugin.rb → middleman-presentation-helpers/plugins/jquery_plugin.rb} +4 -5
  22. data/lib/middleman-presentation-helpers/plugins/metadata_plugin.rb +13 -0
  23. data/lib/{middleman-presentation/helpers/plugins/diagram_plugin.rb → middleman-presentation-helpers/plugins/normalize_plugin.rb} +4 -5
  24. data/lib/middleman-presentation-helpers/plugins/print_plugin.rb +17 -0
  25. data/lib/middleman-presentation-helpers/plugins/slides_plugin.rb +33 -0
  26. data/lib/{middleman-presentation/helpers → middleman-presentation-helpers}/version.rb +1 -1
  27. data/lib/middleman-presentation-plugin.rb +1 -0
  28. data/middleman-presentation-helpers.gemspec +5 -5
  29. data/vendor/assets/{javascripts → middleman-presentation-helpers/footer}/footer.js +4 -2
  30. data/vendor/assets/middleman-presentation-helpers/footer/footer.scss +3 -0
  31. data/vendor/assets/{stylesheets → middleman-presentation-helpers/image_gallery}/image_gallery.scss +0 -0
  32. data/vendor/assets/{stylesheets → middleman-presentation-helpers/images}/images.scss +0 -0
  33. data/vendor/assets/middleman-presentation-helpers/print/pdf.scss +200 -0
  34. metadata +29 -24
  35. data/.travis.yml +0 -8
  36. data/Gemfile +0 -50
  37. data/Gemfile.lock +0 -382
  38. data/config/rubocop/exclude.yml +0 -25
  39. data/config/rubocop/include.yml +0 -142
  40. data/lib/middleman-presentation/helpers.rb +0 -14
  41. data/lib/middleman-presentation/helpers/plugins/common_plugin.rb +0 -22
  42. data/lib/middleman-presentation/helpers/plugins/image_gallery_plugin.rb +0 -35
  43. data/lib/middleman-presentation/helpers/plugins/slides_plugin.rb +0 -43
  44. data/vendor/assets/stylesheets/footer.scss +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 876b18b3f9d70c049bef406627c51b9ed376b772
4
- data.tar.gz: 1eb02bac537e4102136f1a13847d3d05dae28e79
3
+ metadata.gz: 1fb635fa3238435651cdd97bd3362c32244f06a3
4
+ data.tar.gz: 4ed2069d1a150026b69674303f4e6b719dec23e5
5
5
  SHA512:
6
- metadata.gz: 39a9576ac8bff208629b9263613ba85445cde1b9ff42cac93f0f126c525a92a8cf6423a1762b0d43adb838082ef00737a14ae5ad24746519e87f049932a6f53d
7
- data.tar.gz: a2176cfcf94cbd60d8f3a792c0709ae037b21d8779594619d25801c3e7f876462699f26e3f927210e16ec3d9b1780dc9ff7c8be6b8fe34aa3846005dc55c3dd4
6
+ metadata.gz: 3ba948607297dd6b971a80f7ca5822e5d292fa67e1aa24e19570e7728f355128cfd30fabb221f482085877cc6aeeb1fdc1dc69692da0f3c01b9ed36038f411bd
7
+ data.tar.gz: 54446cd01e1baec08ccd4df9daf10f03b684abf0ff956abccba1ee87e1ab57424732eccebffa0dc7c21f18167c2526023afd316b3090a2a50c36def915f336c4
data/.rspec CHANGED
@@ -1,5 +1,3 @@
1
- --require rspec/legacy_formatters
2
- #--require spec_helper
3
1
  --format Fuubar
4
2
  --order rand
5
3
  --color
data/.rubocop.yml CHANGED
@@ -1,4 +1,45 @@
1
- inherit_from:
2
- - config/rubocop/include.yml
3
- - config/rubocop/exclude.yml
4
- - config/rubocop/exclude.yml
1
+ AllCops:
2
+ Exclude:
3
+ - 'tmp/**/*'
4
+
5
+ # Configuration parameters: AllowURI.
6
+ Metrics/LineLength:
7
+ Max: 225
8
+
9
+ # Configuration parameters: CountKeywordArgs.
10
+ Metrics/ParameterLists:
11
+ Max: 6
12
+
13
+ # Configuration parameters: Exclude.
14
+ Style/FileName:
15
+ Enabled: false
16
+
17
+ # Configuration parameters: CountComments.
18
+ Metrics/MethodLength:
19
+ Max: 118
20
+
21
+ # Configuration parameters: CountComments.
22
+ Metrics/ClassLength:
23
+ Max: 160
24
+ # Exclude:
25
+ # - lib/middleman-presentation-core/cli/create_presentation.rb
26
+
27
+ Metrics/CyclomaticComplexity:
28
+ Max: 9
29
+ # Exclude:
30
+ # - lib/middleman-presentation-core/file_extensions.rb
31
+
32
+ #Metrics/PerceivedComplexity:
33
+ # Exclude:
34
+ # - lib/middleman-presentation-core/cli/create_slide.rb
35
+ # - lib/middleman-presentation-core/frontend_component.rb
36
+ # - lib/middleman-presentation-core/assets_manager.rb
37
+ # - lib/middleman-presentation-core/file_extensions.rb
38
+ # - lib/middleman-presentation-core/commands/slide.rb
39
+
40
+ # Configuration parameters: MaxSlashes.
41
+ Style/RegexpLiteral:
42
+ MaxSlashes: 0
43
+
44
+ Metrics/AbcSize:
45
+ Enabled: false
data/README.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Middleman::Presentation::Helpers
2
2
 
3
- TODO: Write a gem description
3
+ This gem contains helpers for
4
+ [`middleman-presentation`](https://github.com/maxmeyer/middleman-presentation):
5
+
6
+ * Image gallery
7
+ * Images
8
+ * Some methods which could be core or helpers
4
9
 
5
10
  ## Installation
6
11
 
@@ -20,7 +25,23 @@ Or install it yourself as:
20
25
 
21
26
  ## Usage
22
27
 
23
- TODO: Write usage instructions here
28
+ ### Image gallery
29
+
30
+ If you want to create an image gallery in your slides you can use the
31
+ `image_gallery`-helper. It just needs an id for the gallery and a list of images.
32
+
33
+ ```eruby
34
+ <%= image_gallery ['img/image1.png', 'img/image2.png'], id: 'my-gallery' %>
35
+ ```
36
+
37
+ ### Images
38
+
39
+ If you want to create an image in your slides and want it to have a fancy style, you can use the
40
+ `image`-helper. Just needs the name of the image.
41
+
42
+ ```eruby
43
+ <%= image 'img/image1.png' %>
44
+ ```
24
45
 
25
46
  ## Contributing
26
47
 
data/Rakefile CHANGED
@@ -6,7 +6,7 @@ require 'active_support/all'
6
6
  require 'open3'
7
7
 
8
8
  def software
9
- gemspec.name
9
+ gemspec.name.sub(/mp-/, 'middleman-presentation-')
10
10
  end
11
11
 
12
12
  def module_name
@@ -14,7 +14,7 @@ def module_name
14
14
  end
15
15
 
16
16
  def require_name
17
- 'middleman-presentation/helpers'
17
+ software
18
18
  end
19
19
 
20
20
  def gemspec
@@ -121,6 +121,10 @@ namespace :test do
121
121
  sh 'bundle exec cucumber -p all'
122
122
  end
123
123
 
124
+ task :parallel_cucumber do
125
+ sh 'bundle exec parallel_cucumber features -o "-p all" --serialize-stdout'
126
+ end
127
+
124
128
  desc 'Run mutant'
125
129
  task :mutant do
126
130
  sh 'mutant --include lib --require middleman-presentation --use rspec "Middleman::Presentation*"'
@@ -5,17 +5,16 @@ Feature: Image Gallery
5
5
  In order to spent as less time as possible on it
6
6
 
7
7
  Background:
8
- Given I create a new presentation with title "My Presentation"
8
+ Given I use presentation fixture "image_gallery" with title "My Presentation"
9
9
  And an image "image01.png" at "images/image01.png"
10
10
  And an image "image02.png" at "images/image02.png"
11
11
 
12
- @wip
13
12
  Scenario: Images only
14
13
  Given a slide named "01.html.erb" with:
15
14
  """
16
15
  <section>
17
16
  <h1>Image Gallery</h1>
18
- <%= image_gallery %W{images/image01.png images/image02.png}, image_gallery_id: 'test-gallery' %>
17
+ <%= image_gallery %W{images/image01.png images/image02.png}, id: 'test-gallery' %>
19
18
  </section>
20
19
  """
21
20
  And the Server is running
@@ -45,7 +44,7 @@ Feature: Image Gallery
45
44
  """
46
45
  <section>
47
46
  <h1>Image Gallery</h1>
48
- <%= image_gallery({'images/image01.png' => 'Title 1', 'images/image02.png' => 'Title 2'}, image_gallery_id: 'test-gallery') %>
47
+ <%= image_gallery({'images/image01.png' => 'Title 1', 'images/image02.png' => 'Title 2'}, id: 'test-gallery') %>
49
48
  </section>
50
49
  """
51
50
  And the Server is running
@@ -0,0 +1,40 @@
1
+ Feature: Add meta data fields
2
+
3
+ As a creator of a presentation
4
+ I want to use meta data from configuration
5
+ In order to display them on the slides
6
+
7
+ Background:
8
+ Given I use presentation fixture "simple1" with title "My Presentation"
9
+
10
+ Scenario: Generate meta data
11
+ Given a presentation config file for middleman-presentation with:
12
+ """
13
+ author: 'Max'
14
+ """
15
+ And a slide named "01.html.erb" with:
16
+ """
17
+ <section>
18
+ <%= metadata_markup([:author], [:author]) %>
19
+ </section>
20
+ """
21
+ When the Server is running
22
+ And I go to "/"
23
+ Then I should see:
24
+ """
25
+ Max
26
+ """
27
+
28
+ Scenario: Unknown field
29
+ Given a slide named "01.html.erb" with:
30
+ """
31
+ <section>
32
+ <%= metadata_markup([:author], []) %>
33
+ </section>
34
+ """
35
+ When the Server is running
36
+ And I go to "/"
37
+ Then I should see:
38
+ """
39
+ You entered an unknown metadata field "author".
40
+ """
@@ -4,4 +4,3 @@ Given(/^an image "([^"]+)" at "([^"]+)"$/) do |source, destination|
4
4
  source = source.gsub(/\.\./, '')
5
5
  write_file File.join('source', destination), File.read(File.expand_path("../../fixtures/images/#{source}", __FILE__))
6
6
  end
7
-
@@ -8,7 +8,7 @@ module Middleman
8
8
  # Helpers for aruba
9
9
  module Aruba
10
10
  def dirs
11
- @dirs ||= ['tmp', 'cucumber']
11
+ @dirs ||= %w(tmp cucumber)
12
12
  end
13
13
  end
14
14
  end
@@ -1,3 +1,3 @@
1
1
  # Test helpers
2
- require 'middleman-presentation/test_helpers'
2
+ require 'middleman-presentation-core/test_helpers'
3
3
  World(Middleman::Presentation::TestHelpers)
@@ -8,7 +8,7 @@ SimpleCov.start
8
8
  # middleman
9
9
  require 'middleman-core'
10
10
  require 'middleman-core/step_definitions'
11
- require 'middleman-presentation/step_definitions'
11
+ require 'middleman-presentation-core/step_definitions'
12
12
 
13
13
  # Pull in all of the gems including those in the `test` group
14
14
  require 'bundler'
@@ -0,0 +1,24 @@
1
+ require 'middleman-presentation-helpers/version'
2
+
3
+ require 'middleman-presentation-helpers/helpers/image_gallery'
4
+ require 'middleman-presentation-helpers/helpers/image'
5
+ require 'middleman-presentation-helpers/helpers/slides'
6
+ require 'middleman-presentation-helpers/helpers/metadata'
7
+
8
+ require 'middleman-presentation-helpers/plugins/jquery_plugin'
9
+ require 'middleman-presentation-helpers/plugins/normalize_plugin'
10
+ require 'middleman-presentation-helpers/plugins/highlight_plugin'
11
+ require 'middleman-presentation-helpers/plugins/slides_plugin'
12
+ require 'middleman-presentation-helpers/plugins/images_plugin'
13
+ require 'middleman-presentation-helpers/plugins/image_gallery_plugin'
14
+ require 'middleman-presentation-helpers/plugins/metadata_plugin'
15
+ require 'middleman-presentation-helpers/plugins/footer_plugin'
16
+ require 'middleman-presentation-helpers/plugins/print_plugin'
17
+
18
+ module Middleman
19
+ module Presentation
20
+ # Helpers plugin
21
+ module Helpers
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,20 @@
1
+ # encoding: utf-8
2
+ require 'middleman-presentation-helpers/helpers/image_gallery.rb'
3
+
4
+ module Middleman
5
+ module Presentation
6
+ # Helper module
7
+ module Helpers
8
+ # Images helpers
9
+ module Image
10
+ # Create entry for single image
11
+ #
12
+ # @param [String] image
13
+ # The path to the image, e.g. 'img/image1.png'
14
+ def image(image)
15
+ ImageGallery.image_gallery Array(image), id: SecureRandom.hex
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
@@ -1,4 +1,3 @@
1
- # encoding: utf-8
2
1
  module Middleman
3
2
  module Presentation
4
3
  # Helper module
@@ -6,20 +5,23 @@ module Middleman
6
5
  # Images helpers
7
6
  module ImageGallery
8
7
  # Create image gallery
9
- def image_gallery(images, image_gallery_id:)
8
+ #
9
+ # @param [Array] images
10
+ # An array of image paths, e.g. `img/image.png`
11
+ #
12
+ # @param [String] id
13
+ # A unique id for your image gallery - unique within your presentation
14
+ def image_gallery(images, id:)
10
15
  template = File.read(File.expand_path('../../../../templates/image_gallery.erb', __FILE__)).chomp
11
16
 
12
17
  images.each_with_object([]) do |(image, title), memo|
13
18
  engine = Erubis::Eruby.new(template)
14
19
 
15
- memo << engine.result(image_path: image, image_gallery_id: image_gallery_id, title: title)
20
+ memo << engine.result(image_path: image, image_gallery_id: id, title: title)
16
21
  end.join("\n")
17
22
  end
18
23
 
19
- # Create entry for single image
20
- def image(image)
21
- image_gallery Array(image), image_gallery_id: SecureRandom.hex
22
- end
24
+ module_function :image_gallery
23
25
  end
24
26
  end
25
27
  end
@@ -0,0 +1,29 @@
1
+ # encoding: utf-8
2
+ module Middleman
3
+ module Presentation
4
+ module Helpers
5
+ # Meta daa helper
6
+ module Metadata
7
+ def metadata_markup(requested_fields, allowed_fields)
8
+ requested_fields = Array(requested_fields).map(&:to_sym)
9
+ allowed_fields = Array(allowed_fields).map(&:to_sym)
10
+ unknown_fields = requested_fields - allowed_fields
11
+
12
+ fail ArgumentError, Middleman::Presentation.t('errors.unknown_metadata_fields', fields: unknown_fields.to_list, count: unknown_fields.size) unless unknown_fields.blank?
13
+
14
+ Erubis::Eruby.new(template).result(fields: requested_fields).chomp
15
+ end
16
+
17
+ private
18
+
19
+ def template
20
+ <<-EOS.strip_heredoc
21
+ <%- fields.each do |f| -%>
22
+ <span class="mp-meta-<%= f %>"><%= Middleman::Presentation.config.public_send f %></span>
23
+ <%- end -%>
24
+ EOS
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
@@ -7,17 +7,19 @@ module Middleman
7
7
  module Slides
8
8
  # Yield slides
9
9
  def yield_slides
10
- list = SlideList.new(Dir.glob(File.join(source_dir, extensions[:presentation].options.slides_directory, '**', '*')), slide_builder: ExistingSlide, base_path: source_dir) do |l|
10
+ environment = Middleman::Presentation::MiddlemanEnvironment.new
11
+
12
+ list = SlideList.new(Dir.glob(File.join(environment.slides_path, '**', '*')), slide_builder: ExistingSlide, base_path: environment.sources_path) do |l|
11
13
  l.transform_with Transformers::FileKeeper.new
12
14
  l.transform_with Transformers::RemoveDuplicateSlides.new raise_error: true
13
- l.transform_with Transformers::IgnoreSlides.new ignore_file: File.join(root, extensions[:presentation].options.slides_ignore_file)
15
+ l.transform_with Transformers::IgnoreSlides.new ignore_file: File.join(environment.root_path, Middleman::Presentation.config.slides_ignore_file)
14
16
  l.transform_with Transformers::SortSlides.new
15
- l.transform_with Transformers::GroupSlides.new template: Erubis::Eruby.new(GroupTemplate.new(working_directory: root).content)
17
+ l.transform_with Transformers::GroupSlides.new template: Erubis::Eruby.new(GroupTemplate.new(working_directory: environment.root_path).content)
16
18
  end
17
19
 
18
20
  list.all.map do |element|
19
21
  begin
20
- element.render { |path| partial(path).chomp }
22
+ element.render { |path| render_template(path, {}, layout: nil).chomp }
21
23
  rescue StandardError => e
22
24
  message = []
23
25
  message << "Rendering slide \"#{element.partial_path}\" failed with"
@@ -0,0 +1,17 @@
1
+ # encoding: utf-8
2
+ module Middleman
3
+ module Presentation
4
+ # Helpers plugin
5
+ module Helpers
6
+ # Slides plugin
7
+ module SlidesPlugin
8
+ extend PluginApi
9
+
10
+ add_assets(
11
+ path: File.expand_path('../../../../vendor/assets', __FILE__),
12
+ importable_files: %w(footer.js footer.scss)
13
+ )
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,23 @@
1
+ # encoding: utf-8
2
+ module Middleman
3
+ module Presentation
4
+ # Helpers plugin
5
+ module Helpers
6
+ # Highlight plugin
7
+ module HighlightPlugin
8
+ extend PluginApi
9
+
10
+ loadable_files = [
11
+ /.*\.js$/
12
+ ]
13
+
14
+ add_component(
15
+ name: :'highlightjs',
16
+ version: 'latest',
17
+ importable_files: %w(zenburn.css),
18
+ loadable_files: loadable_files
19
+ )
20
+ end
21
+ end
22
+ end
23
+ end
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ module Middleman
3
+ module Presentation
4
+ # Helpers plugin
5
+ module Helpers
6
+ # Image Gallery plugin
7
+ class ImageGalleryPlugin < Plugin
8
+ extend PluginApi
9
+
10
+ add_assets(
11
+ path: File.expand_path('../../../../vendor/assets', __FILE__),
12
+ importable_files: %w(image_gallery.scss)
13
+ )
14
+
15
+ add_component(
16
+ name: :lightbox2,
17
+ github: 'dg-vrnetze/revealjs-lightbox2',
18
+ importable_files: %w(js/lightbox.js)
19
+ )
20
+
21
+ add_helpers Middleman::Presentation::Helpers::ImageGallery
22
+ end
23
+ end
24
+ end
25
+ end