middleman-galley 0.0.1 → 0.0.2

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: 441fc879469c42cbec011f465257a0ceeac8ad31
4
- data.tar.gz: 22f615b2fb1f31eecef23cab7c4a7e7b79e18538
3
+ metadata.gz: 10752cd763741094cdbd6a501e81d2ce44e7fb6f
4
+ data.tar.gz: 728e6ab302b4b9d457298ab3d65a9b2763ff3fce
5
5
  SHA512:
6
- metadata.gz: 072aad4f8c14ff2f2e0e691d0c8af3733685773d57913a699a2fb8eb2c2b9cc5b67aeb18c3f2b971db4a7ab0a6d94e64e337b33996dcd962840d68d995b2c9c8
7
- data.tar.gz: e47135cb19c48b5de2efd39ec860d7cd3bfdf6eebba3317690abf3181d323da436218e777728b52fab4e5117a5b66fba9e3c6ee516615e8aeeb67532d1c68ff7
6
+ metadata.gz: aefcb04fb033bac2a95047eaf4d0877ef04a6e1f839cd368c2bbb65a4e0f322c7cca653fc43aec397532040d8b989a689d36e2c2332f9c7dbb0effab1734641b
7
+ data.tar.gz: 85208cee122766098e57c876a2b71b21ffe80d74b9b01854c600b1ae61f34fa25502630562d4f2a5a04484066909bac3ea33a45b0c8c02fed84923754b050223
data/.travis.yml ADDED
@@ -0,0 +1,8 @@
1
+ language: ruby
2
+ rvm: [ 2.0.0 ]
3
+
4
+ bundler_args: --without guard
5
+ script: rake
6
+
7
+ notifications:
8
+ email: false
data/Gemfile CHANGED
@@ -2,3 +2,5 @@ source 'https://rubygems.org'
2
2
 
3
3
  # Specify your gem's dependencies in middleman-galley.gemspec
4
4
  gemspec
5
+
6
+ gem 'guard-cucumber', group: :guard
data/README.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # Middleman::Galley
2
2
 
3
+ [![Gem Version](https://badge.fury.io/rb/middleman-galley.png)](http://badge.fury.io/rb/middleman-galley)
4
+ [![Build Status](https://travis-ci.org/sowcow/middleman-galley.png?branch=master)](https://travis-ci.org/sowcow/middleman-galley)
5
+ [![Dependency Status](https://gemnasium.com/sowcow/middleman-galley.png)](https://gemnasium.com/sowcow/middleman-galley)
6
+ [![Code Climate](https://codeclimate.com/github/sowcow/middleman-galley.png)](https://codeclimate.com/github/sowcow/middleman-galley)
7
+ [![Coverage Status](https://coveralls.io/repos/sowcow/middleman-galley/badge.png?branch=master)](https://coveralls.io/r/sowcow/middleman-galley?branch=master)
8
+
3
9
  TODO: Write a gem description
4
10
 
5
11
  ## Installation
@@ -18,7 +24,8 @@ Or install it yourself as:
18
24
 
19
25
  ## Usage
20
26
 
21
- TODO: Write usage instructions here
27
+ 1. https://github.com/sowcow/middleman-galley/blob/master/features/usage.feature
28
+ 2. https://github.com/sowcow/middleman-galley/issues/new
22
29
 
23
30
  ## Contributing
24
31
 
@@ -36,3 +36,13 @@ end
36
36
  And /^the file "(.*?)" has no images$/ do |file|
37
37
  assert_images file, []
38
38
  end
39
+
40
+ And /^document "(.*?)" has (\d+) "(.*?)"$/ do \
41
+ |file, count, selector|
42
+ count = count.to_i
43
+ select(file, selector).count.should == count
44
+ end
45
+
46
+ def select file, selector
47
+ parse_html(file).css selector
48
+ end
@@ -1 +1,4 @@
1
1
  require 'aruba/cucumber'
2
+
3
+ require 'coveralls'
4
+ Coveralls.wear!
@@ -15,7 +15,7 @@ Feature: Usage
15
15
  Given I successfully run `middleman init my-site`
16
16
  And I cd to "my-site"
17
17
 
18
- # images for gallery
18
+ # images for the gallery
19
19
  And I prepare following files:
20
20
  | source/gallery/cards/one/01.png |
21
21
  | source/gallery/cards/one/02.png |
@@ -37,8 +37,8 @@ Feature: Usage
37
37
  # by default uses `gallery` dir inside `source` dir
38
38
  activate :galley
39
39
 
40
- # made with relative paths in mind anyway
41
- # activate :directory_indexes
40
+ # todo: test non relative paths?
41
+ set :relative_links, true
42
42
  """
43
43
  # verbose option is optional
44
44
  And I successfully run `middleman build --verbose`
@@ -62,10 +62,10 @@ Feature: Usage
62
62
  | build/gallery/other/01.png |
63
63
  | build/gallery/other/02.png |
64
64
 
65
- # pages are linked
65
+ # pages are linked (links sorted by name?) distinct feature?
66
66
  And the file "build/gallery/index.html" has links:
67
- | other | other/ |
68
67
  | cards | cards/ |
68
+ | other | other/ |
69
69
 
70
70
  And the file "build/gallery/cards/index.html" has links:
71
71
  | one | one/ |
@@ -87,3 +87,10 @@ Feature: Usage
87
87
  | 02.png |
88
88
  And the file "build/gallery/index.html" has no images
89
89
  And the file "build/gallery/cards/index.html" has no images
90
+
91
+ # with fotorama template by default:
92
+ And document "build/gallery/index.html" has 0 ".fotorama > img"
93
+ And document "build/gallery/cards/index.html" has 0 ".fotorama > img"
94
+ And document "build/gallery/cards/one/index.html" has 2 ".fotorama > img"
95
+ And document "build/gallery/cards/two/index.html" has 2 ".fotorama > img"
96
+ And document "build/gallery/other/index.html" has 2 ".fotorama > img"
@@ -0,0 +1,78 @@
1
+ module Middleman
2
+ module Galley
3
+ class GalleryTemplate
4
+ @@known = {}
5
+ def self.[] name
6
+ name = name.to_sym
7
+ @@known[name]
8
+ end
9
+
10
+ def self.register name
11
+ name = name.to_sym
12
+ @@known[name] = self
13
+ end
14
+
15
+ def self.build context
16
+ new(context).build
17
+ end
18
+
19
+ def initialize context
20
+ @context = context
21
+ end
22
+
23
+ private
24
+ def a
25
+ @context
26
+ end
27
+
28
+ def children
29
+ @context.current_page.children
30
+ end
31
+
32
+ def image_tags
33
+ children.sort_by(&:url).map { |x| image x }.compact
34
+ end
35
+
36
+ def image res
37
+ return nil unless image? res
38
+ url = if a.relative_links
39
+ relative res.url
40
+ else
41
+ res.url
42
+ end
43
+ a.tag :img, src: url
44
+ end
45
+
46
+ IMG = /\.(png|jpg|jpeg|gif|svg|bmp)$/
47
+ def image? res
48
+ res.source_file =~ IMG
49
+ end
50
+
51
+ def relative url
52
+ url.sub a.current_page.url, ''
53
+ end
54
+ end
55
+
56
+ # todo extract:
57
+
58
+ class Fotorama < GalleryTemplate
59
+ register :fotorama
60
+
61
+ def build
62
+ a.content_tag(:script, src:
63
+ "http://code.jquery.com/jquery-1.10.2.min.js"){''}
64
+ a.content_tag(:script, src:
65
+ "http://fotorama.s3.amazonaws.com/4.4.6/fotorama.js"){''}
66
+ style = a.content_tag(:script) do <<tag
67
+ $("head").append("<link rel='stylesheet' href='http://fotorama.s3.amazonaws.com/4.4.6/fotorama.css' />");
68
+ tag
69
+ end
70
+ images = a.content_tag(:div, class: 'fotorama') do
71
+ image_tags.join
72
+ end
73
+
74
+ nil
75
+ end
76
+ end
77
+ end
78
+ end
@@ -1,4 +1,4 @@
1
- #require 'delegate' #< SimpleDelegator
1
+ require 'middleman/galley/gallery_template'
2
2
 
3
3
  module Middleman
4
4
  module Galley
@@ -11,16 +11,18 @@ module Middleman
11
11
  # to extract as a partial?...
12
12
  def nested
13
13
  a.current_page.children.select { |x| nested? x }
14
+ .sort_by { |x| name x }
14
15
  .map { |x| link x }
15
16
  .join
16
17
  end
17
18
 
18
19
  # to extract as a partial?...
19
- def images
20
- a.current_page.children.select { |x| image? x }
21
- .sort_by { |x| x.url }
22
- .map { |x| image x }
23
- .join
20
+ def images gallery_template = :default
21
+ if gallery_template == :default
22
+ gallery_template = a.galley!
23
+ .options.default_template
24
+ end
25
+ GalleryTemplate[gallery_template].build a
24
26
  end
25
27
 
26
28
  private
@@ -33,24 +35,12 @@ module Middleman
33
35
  res.path =~ /\/index\.html$/
34
36
  end
35
37
 
36
- def image res
37
- #return nil unless image? res #+optional compact ?
38
- #raise [a.current_page.url, res.url].inspect
39
- #raise [a.current_page.url, res.url,
40
- # relative(res.url),
41
- # a.image_tag(relative res.url) ].inspect
42
- #a.image_tag relative(res.url)
43
- '<img src="%s" />' % relative(res.url)
38
+ def name res
39
+ Pathname(res.url).basename.to_s
44
40
  end
45
41
 
46
42
  def link res
47
- name = Pathname(res.url).basename.to_s
48
- a.link_to name, relative(res.url)
49
- end
50
-
51
- # middleman dont want to do that...
52
- def relative url
53
- url.sub a.current_page.url, ''
43
+ a.link_to name(res), res
54
44
  end
55
45
  end
56
46
  end
@@ -1,5 +1,5 @@
1
1
  module Middleman
2
2
  module Galley
3
- VERSION = "0.0.1"
3
+ VERSION = "0.0.2"
4
4
  end
5
5
  end
@@ -8,9 +8,20 @@ require 'fileutils'
8
8
  module Middleman
9
9
  module Galley
10
10
 
11
+ module Method
12
+ def galley!
13
+ extensions[:galley].values.find { |x|
14
+ x.has? current_page
15
+ }
16
+ end
17
+ end
18
+
11
19
  class Ext < Extension
12
20
  extend GemStuff
13
21
 
22
+ self.option :default_template, 'fotorama',
23
+ 'default gallery template'
24
+
14
25
  self.option :at, 'gallery',
15
26
  'gallery directory'
16
27
 
@@ -23,7 +34,13 @@ module Middleman
23
34
  self.option :template, template,
24
35
  'template for missing pages'
25
36
 
37
+ def self.supports_multiple_instances?
38
+ true
39
+ end
40
+
26
41
  def initialize app, options_hash={}, &block
42
+ app.send :include, Galley::Method
43
+
27
44
  super
28
45
 
29
46
  missing.each { |dir|
@@ -33,6 +50,12 @@ module Middleman
33
50
  }
34
51
  end
35
52
 
53
+ def has? page
54
+ at = options.at
55
+ at = at[0] == ?/ ? at : "/#{at}"
56
+ page.url.index(at) == 0
57
+ end
58
+
36
59
  helpers do
37
60
  def galley
38
61
  ::Middleman::Galley::Helper.new self
@@ -23,6 +23,8 @@ Gem::Specification.new do |spec|
23
23
 
24
24
  spec.add_development_dependency 'aruba'
25
25
  spec.add_development_dependency 'nokogiri'
26
- spec.add_development_dependency 'guard-cucumber'
27
- spec.add_runtime_dependency 'middleman'
26
+ spec.add_development_dependency 'coveralls'
27
+ # moved to Gemfile:
28
+ #spec.add_development_dependency 'guard-cucumber', group: :guard
29
+ spec.add_runtime_dependency 'middleman', '~> 3.1'
28
30
  end
data/templates/index.erb CHANGED
@@ -1,2 +1,6 @@
1
+ ---
2
+ default: default
3
+ ---
4
+
1
5
  <%= galley.nested %>
2
- <%= galley.images %>
6
+ <%= galley.images :default %>
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: middleman-galley
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander K
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-10-23 00:00:00.000000000 Z
11
+ date: 2013-10-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: guard-cucumber
70
+ name: coveralls
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - '>='
@@ -84,16 +84,16 @@ dependencies:
84
84
  name: middleman
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
- version: '0'
89
+ version: '3.1'
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
- version: '0'
96
+ version: '3.1'
97
97
  description: 'convenient and simplistic image gallery for middleman '
98
98
  email:
99
99
  - xpyro@ya.ru
@@ -102,6 +102,7 @@ extensions: []
102
102
  extra_rdoc_files: []
103
103
  files:
104
104
  - .gitignore
105
+ - .travis.yml
105
106
  - Gemfile
106
107
  - Guardfile
107
108
  - LICENSE.txt
@@ -111,6 +112,7 @@ files:
111
112
  - features/support/env.rb
112
113
  - features/usage.feature
113
114
  - lib/middleman/galley.rb
115
+ - lib/middleman/galley/gallery_template.rb
114
116
  - lib/middleman/galley/gem_stuff.rb
115
117
  - lib/middleman/galley/helper.rb
116
118
  - lib/middleman/galley/version.rb