octo-captioned-image 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/CHANGELOG.md +5 -0
- data/LICENSE.txt +22 -0
- data/README.md +161 -0
- data/assets/stylesheets/main.scss +74 -0
- data/lib/octo-captioned-image.rb +85 -0
- data/lib/octo-captioned-image/caption_extractor.rb +60 -0
- data/lib/octo-captioned-image/caption_options_parser.rb +59 -0
- data/lib/octo-captioned-image/version.rb +7 -0
- metadata +123 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: e29c820c38696a033e556886c7be11e3970c24bf
|
4
|
+
data.tar.gz: ebe27f212dcbdaf79713e0c87245fafccbcfe9de
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ea78442d170e734541bf1dbadc0cc30a1a9d2e9ee10837cf4ad7a05cad6bb50e6da2da8d42aafa47a2be1a33264a4bd90644b98a4238a4066b605eb664ec8f6e
|
7
|
+
data.tar.gz: f51146762929e60edcfdd87d3623a104ad33e6cd19c755a7e0af003988e6f8e617dff384a68f198b611d3c35ad6111896f6e81d089186e4532dbceabba1a50e8
|
data/CHANGELOG.md
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 Andrew Esler
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,161 @@
|
|
1
|
+
# Octopress Captioned Image
|
2
|
+
|
3
|
+
An Octopress ink plugin for creating captioned images.
|
4
|
+
|
5
|
+
[](https://travis-ci.org/ajesler/octo-captioned-image)
|
6
|
+
|
7
|
+
## Example
|
8
|
+
|
9
|
+

|
10
|
+
|
11
|
+
is produced by
|
12
|
+
|
13
|
+
```
|
14
|
+
{% captioned_image /images/kitten.jpeg "a kitten!" float:"left" chrome %}
|
15
|
+
{% captioned_image /images/ijen-fire.jpg "Fire on Mt Ijen by Dennis Stauffer via Flickr" float:"left" position:"bottom" chrome %}
|
16
|
+
```
|
17
|
+
|
18
|
+
## Installation
|
19
|
+
|
20
|
+
If you're using bundler add this gem to your site's Gemfile in the `:jekyll_plugins` group:
|
21
|
+
|
22
|
+
group :jekyll_plugins do
|
23
|
+
gem 'octo-captioned-image'
|
24
|
+
end
|
25
|
+
|
26
|
+
Then install the gem with Bundler
|
27
|
+
|
28
|
+
$ bundle
|
29
|
+
|
30
|
+
To install manually without bundler:
|
31
|
+
|
32
|
+
$ gem install octo-captioned-image
|
33
|
+
|
34
|
+
Then add the gem to your Jekyll configuration.
|
35
|
+
|
36
|
+
gems:
|
37
|
+
- octo-captioned-image
|
38
|
+
|
39
|
+
If you're using a standard Jekyll theme, add `{% css_asset_tag %}` to your site layout.
|
40
|
+
|
41
|
+
|
42
|
+
## Syntax
|
43
|
+
|
44
|
+
```
|
45
|
+
{% captioned_image src caption [width height] [position:top|bottom] [float:left|right] [clear:left|right|both] %}
|
46
|
+
```
|
47
|
+
|
48
|
+
### Properties
|
49
|
+
|
50
|
+
`src` and `caption` are required, the rest of the properties are optional.
|
51
|
+
Please note that both width and height must be given or neither given. `auto` can be used as a width and height value.
|
52
|
+
|
53
|
+
* `src`
|
54
|
+
this is required and can be an absolute or relative path.
|
55
|
+
* `caption`
|
56
|
+
this is required and must be surrounded by `"` or `'`. Any usages of the surrounding quote type (`"` or `'`) in the caption must be escaped like `\"` or `\'`. If you surrounded the caption with `"` then `'` in the caption do not need to be escaped, and vice versa.
|
57
|
+
* `width`
|
58
|
+
no default value
|
59
|
+
* `height`
|
60
|
+
no default value
|
61
|
+
* `float`
|
62
|
+
no default value
|
63
|
+
* `clear`
|
64
|
+
no default value
|
65
|
+
* `position`
|
66
|
+
defaults to `top`
|
67
|
+
* `chrome`
|
68
|
+
has no value, but if present will add a gradient background to the caption.
|
69
|
+
|
70
|
+
|
71
|
+
## Examples
|
72
|
+
|
73
|
+
```
|
74
|
+
{% captioned_image {{site.url}}/images/puppies.png "Look at the puppies!" %}
|
75
|
+
|
76
|
+
{% captioned_image {{site.url}}/images/adventure_awaits.gif "Adventure awaits!" float:"left" clear:"right" %}
|
77
|
+
|
78
|
+
{% captioned_image {{site.url}}/images/sad_robot.png "This is why we dont let machines have feelings" 1000px 500px position:bottom float:"left" clear:"right" chrome %}
|
79
|
+
|
80
|
+
{% captioned_image {{site.url}}/images/unimportant.jpg "And I said \"O'Leary is a fun guy!\"" clear:"both" position:"bottom" %}
|
81
|
+
|
82
|
+
// you can also embed html into the caption
|
83
|
+
// note that you will be need to careful with the html quotes.
|
84
|
+
{% captioned_image {{site.url}}/images/circuit-schematic.png "Circuit schematic - created with <a href='https://fritzing.org'>fritzing</a>" %}
|
85
|
+
|
86
|
+
// multiple images in a figure
|
87
|
+
// note that all the images will have the same caption, and that any size given will be applied to all images
|
88
|
+
{% captioned_image {{site.url}}/images/a-mouse.png {{site.url}}/images/a-bear.png "How to spot the difference between bears and mice" position:"bottom" chrome %}
|
89
|
+
```
|
90
|
+
|
91
|
+
results in the following html
|
92
|
+
|
93
|
+
```html
|
94
|
+
<figure class="captioned-image">
|
95
|
+
<figcaption class="caption-top">
|
96
|
+
Look at the puppies!
|
97
|
+
</figcaption>
|
98
|
+
<img src="http://yoursite.com/images/puppies.png" alt="Look at the puppies!">
|
99
|
+
</figure>
|
100
|
+
|
101
|
+
<figure class="captioned-image float-left clear-right">
|
102
|
+
<figcaption class="caption-top">
|
103
|
+
Adventure awaits!
|
104
|
+
</figcaption>
|
105
|
+
<img src="http://yoursite.com/images/adventure_awaits.gif" alt="Adventure awaits!">
|
106
|
+
</figure>
|
107
|
+
|
108
|
+
<figure class="captioned-image-chrome float-left clear-right">
|
109
|
+
<img src="http://yoursite.com/images/sad_robot.png" alt="This is why we dont let machines have feelings" width="1000px" height="500px">
|
110
|
+
<figcaption class="caption-bottom-chrome">
|
111
|
+
This is why we dont let machines have feelings
|
112
|
+
</figcaption>
|
113
|
+
</figure>
|
114
|
+
|
115
|
+
<figure class="captioned-image clear-both">
|
116
|
+
<img src="http://yoursite.com/images/unimportant.jpg" alt="And I said "O'Leary is a fun guy!"" width="1000px" height="500px">
|
117
|
+
<figcaption class="caption-bottom">
|
118
|
+
And I said "O'Leary is a fun guy!"
|
119
|
+
</figcaption>
|
120
|
+
</figure>
|
121
|
+
|
122
|
+
<figure class="captioned-image">
|
123
|
+
<figcaption class="caption-top">
|
124
|
+
Circuit schematic - created with <a href='http://fritzing.org'>fritzing</a>
|
125
|
+
</figcaption>
|
126
|
+
<img src="http://yoursite.com/images/circuit-schematic.png" alt="Circuit schematic - created with <a href='http://fritzing.org'>fritzing</a>" />
|
127
|
+
</figure>
|
128
|
+
|
129
|
+
<figure class="captioned-image-chrome">
|
130
|
+
<img src="http://yoursite.com/images/a-mouse.png" alt="How to spot the difference between bears and mice" />
|
131
|
+
<img src="http://yoursite.com/images/a-bear.png" alt="How to spot the difference between bears and mice" />
|
132
|
+
<figcaption class="caption-bottom-chrome">
|
133
|
+
How to spot the difference between bears and mice
|
134
|
+
</figcaption>
|
135
|
+
</figure>
|
136
|
+
```
|
137
|
+
|
138
|
+
## Customisation
|
139
|
+
|
140
|
+
To customise the styling, copy the stylesheet into your _plugins directory with the following command. You can then edit it and override the default styles.
|
141
|
+
|
142
|
+
```
|
143
|
+
octopress ink copy octo-captioned-image --stylesheets
|
144
|
+
```
|
145
|
+
|
146
|
+
## Testing
|
147
|
+
|
148
|
+
There are two sets of tests; caption extraction/option parsing logic, and a rendered output check.
|
149
|
+
|
150
|
+
```
|
151
|
+
rake test
|
152
|
+
bundle exec clash test
|
153
|
+
```
|
154
|
+
|
155
|
+
## Contributing
|
156
|
+
|
157
|
+
1. Fork it ( https://github.com/ajesler/octo-captioned-image/fork )
|
158
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
159
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
160
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
161
|
+
5. Create a new Pull Request
|
@@ -0,0 +1,74 @@
|
|
1
|
+
figure.captioned-image {
|
2
|
+
padding: 0;
|
3
|
+
margin: 1em 1em;
|
4
|
+
border: 0;
|
5
|
+
display: table;
|
6
|
+
font-size: 0.8em;
|
7
|
+
}
|
8
|
+
|
9
|
+
figure.captioned-image-chrome {
|
10
|
+
@extend figure.captioned-image;
|
11
|
+
border: 1px solid #cbcbcb;
|
12
|
+
}
|
13
|
+
|
14
|
+
figure.captioned-image img {
|
15
|
+
margin: 0;
|
16
|
+
padding: 0;
|
17
|
+
}
|
18
|
+
|
19
|
+
figcaption.captioned-image-caption {
|
20
|
+
margin: 0;
|
21
|
+
padding: 0;
|
22
|
+
position: relative;
|
23
|
+
text-align: center;
|
24
|
+
line-height: 2em;
|
25
|
+
display: table-caption;
|
26
|
+
}
|
27
|
+
|
28
|
+
figcaption.caption-top {
|
29
|
+
@extend figcaption.captioned-image-caption;
|
30
|
+
caption-side: top;
|
31
|
+
}
|
32
|
+
|
33
|
+
figcaption.caption-top-chrome {
|
34
|
+
@extend figcaption.caption-top;
|
35
|
+
text-shadow: rgba(255,255,255,0.8) 0 1px 0;
|
36
|
+
color: #474747;
|
37
|
+
background-color: #ccc;
|
38
|
+
background-image: linear-gradient(#fff, #f0f0f0 6%, #e5e5e5 90%, #e5e5e5);
|
39
|
+
border: 1px solid #cbcbcb;
|
40
|
+
border-top-left-radius: 5px;
|
41
|
+
border-top-right-radius: 5px;
|
42
|
+
}
|
43
|
+
|
44
|
+
figcaption.caption-bottom {
|
45
|
+
@extend figcaption.captioned-image-caption;
|
46
|
+
caption-side: bottom;
|
47
|
+
}
|
48
|
+
|
49
|
+
figcaption.caption-bottom-chome {
|
50
|
+
@extend figcaption.caption-bottom;
|
51
|
+
margin: -5px 0 0 0;
|
52
|
+
caption-side: bottom;
|
53
|
+
border-top-left-radius: 0px;
|
54
|
+
border-top-right-radius: 0px;
|
55
|
+
border-bottom-left-radius: 5px;
|
56
|
+
border-bottom-right-radius: 5px;
|
57
|
+
background-image: linear-gradient(#f0f0f0, #e5e5e5 90%, #e5e5e5);
|
58
|
+
}
|
59
|
+
|
60
|
+
figure.clear-both {
|
61
|
+
clear: both;
|
62
|
+
}
|
63
|
+
figure.clear-left {
|
64
|
+
clear: left;
|
65
|
+
}
|
66
|
+
figure.clear-right {
|
67
|
+
clear: right;
|
68
|
+
}
|
69
|
+
figure.float-left {
|
70
|
+
float: left;
|
71
|
+
}
|
72
|
+
figure.float-right {
|
73
|
+
float: right;
|
74
|
+
}
|
@@ -0,0 +1,85 @@
|
|
1
|
+
require "octo-captioned-image/version"
|
2
|
+
require "octo-captioned-image/caption_extractor"
|
3
|
+
require "octo-captioned-image/caption_options_parser"
|
4
|
+
require "octopress-ink"
|
5
|
+
|
6
|
+
module Octopress
|
7
|
+
module Tags
|
8
|
+
module CaptionedImageTag
|
9
|
+
class Tag < Liquid::Tag
|
10
|
+
# most of this class is copied from
|
11
|
+
# https://github.com/octopress/video-tag/blob/master/lib/octopress-video-tag.rb
|
12
|
+
|
13
|
+
def initialize(tag_name, markup, tokens)
|
14
|
+
@markup = markup
|
15
|
+
super
|
16
|
+
end
|
17
|
+
|
18
|
+
def render(context)
|
19
|
+
@markup = process_liquid(context) # what is this doing? should not replace markup
|
20
|
+
|
21
|
+
caption, remaining_markup = extract_caption(@markup)
|
22
|
+
options = parse_options(remaining_markup)
|
23
|
+
|
24
|
+
figure_classes = ["captioned-image#{'-chrome' if options.chrome}"]
|
25
|
+
figure_classes << "float-#{options.float}" if options.float
|
26
|
+
figure_classes << "clear-#{options.clear}" if options.clear
|
27
|
+
figure_class_decl = " class=\"#{figure_classes.join(' ')}\""
|
28
|
+
|
29
|
+
img_attributes = ""
|
30
|
+
img_attributes += "width=\"#{options.width}\" " if options.width
|
31
|
+
img_attributes += "height=\"#{options.height}\" " if options.height
|
32
|
+
|
33
|
+
figcaption_class = "caption-#{options.position}"
|
34
|
+
figcaption_class += "-chrome" if options.chrome
|
35
|
+
|
36
|
+
fig_caption = [" <figcaption class=\"#{figcaption_class}\">"]
|
37
|
+
fig_caption << " #{caption}"
|
38
|
+
fig_caption << " </figcaption>"
|
39
|
+
|
40
|
+
image = options.source.map do |src|
|
41
|
+
# should this caption be escaped if it contains html or quotes?
|
42
|
+
[" <img src=\"#{src}\" alt=\"#{caption}\" #{img_attributes}/>"]
|
43
|
+
end
|
44
|
+
|
45
|
+
figure_content = options.position == "top" ? fig_caption + image : image + fig_caption
|
46
|
+
|
47
|
+
figure = ["<figure#{figure_class_decl}>"]
|
48
|
+
figure += figure_content
|
49
|
+
figure << "</figure>"
|
50
|
+
|
51
|
+
return figure.join("\n")
|
52
|
+
end
|
53
|
+
|
54
|
+
def extract_caption(markup)
|
55
|
+
# the markup other methods use to find params has the caption removed to avoid parsing issues
|
56
|
+
caption, remaining_markup = CaptionExtractor.extract(markup)
|
57
|
+
return caption, remaining_markup
|
58
|
+
end
|
59
|
+
|
60
|
+
def parse_options(option_string)
|
61
|
+
CaptionOptionsParser.new(option_string)
|
62
|
+
end
|
63
|
+
|
64
|
+
def process_liquid(context)
|
65
|
+
Liquid::Template.parse(@markup).render!(context.environments.first)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
Liquid::Template.register_tag('captioned_image', Octopress::Tags::CaptionedImageTag::Tag)
|
73
|
+
|
74
|
+
Octopress::Ink.add_plugin({
|
75
|
+
name: "Octopress Captioned Image",
|
76
|
+
gem: "octo-captioned-image",
|
77
|
+
path: File.expand_path(File.join(File.dirname(__FILE__), "../")),
|
78
|
+
type: "plugin",
|
79
|
+
|
80
|
+
# Metadata which is displayed with plugin info
|
81
|
+
version: Octopress::Tags::CaptionedImageTag::VERSION,
|
82
|
+
description: "Create captioned images",
|
83
|
+
source_url: "https://github.com/ajesler/octo-captioned-image",
|
84
|
+
website: "https://github.com/ajesler/octo-captioned-image"
|
85
|
+
})
|
@@ -0,0 +1,60 @@
|
|
1
|
+
module Octopress
|
2
|
+
module Tags
|
3
|
+
module CaptionedImageTag
|
4
|
+
class CaptionExtractor
|
5
|
+
|
6
|
+
QSINGLE = "'"
|
7
|
+
QDOUBLE = '"'
|
8
|
+
|
9
|
+
def self.extract(markup)
|
10
|
+
|
11
|
+
# find the first quote instance
|
12
|
+
c, start = caption_start(markup)
|
13
|
+
|
14
|
+
partial = markup[start+1..-1]
|
15
|
+
fin = -1
|
16
|
+
caption = nil
|
17
|
+
|
18
|
+
partial.chars.each_with_index do |v,i|
|
19
|
+
if v == c && partial[i-1] != '\\'
|
20
|
+
fin = i
|
21
|
+
caption = partial[0..fin-1]
|
22
|
+
break
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# remove the comment string from @mutable_markup
|
27
|
+
remainder = markup[0..(start-1)]+markup[(start+fin+2)..-1]
|
28
|
+
|
29
|
+
# swap " -> " and ' -> ' in caption
|
30
|
+
if c == QDOUBLE
|
31
|
+
caption.gsub!("\\#{QDOUBLE}", """)
|
32
|
+
else
|
33
|
+
caption.gsub!("\\#{QSINGLE}", "'")
|
34
|
+
end
|
35
|
+
|
36
|
+
return caption, remainder
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def self.caption_start(markup)
|
42
|
+
di = markup.index(QDOUBLE)
|
43
|
+
si = markup.index(QSINGLE)
|
44
|
+
|
45
|
+
if di && si && di < si
|
46
|
+
return QDOUBLE, di
|
47
|
+
elsif di && si && si < di
|
48
|
+
return QSINGLE, si
|
49
|
+
elsif di && !si
|
50
|
+
return QDOUBLE, di
|
51
|
+
elsif si && !di
|
52
|
+
return QSINGLE, si
|
53
|
+
else
|
54
|
+
raise "Could not find a quoted caption in #{@markup}"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
module Octopress
|
2
|
+
module Tags
|
3
|
+
module CaptionedImageTag
|
4
|
+
class CaptionOptionsParser
|
5
|
+
|
6
|
+
attr_reader :position, :width, :height, :source, :float, :clear, :chrome
|
7
|
+
DEFAULT_POSITION = "top"
|
8
|
+
|
9
|
+
Source = /((https?:\/\/|\/)\S+\.(png|gif|bmp|jpe?g)\S*)/i
|
10
|
+
Dimensions = /\s(auto|\d\S+)/i
|
11
|
+
Position = /(:?position:\s*"?(:?\w+))/i
|
12
|
+
Float = /(:?float:\s*"?(:?\w+))/i
|
13
|
+
Clear = /(:?clear:\s*"?(:?\w+))/i
|
14
|
+
Chrome = /chrome/
|
15
|
+
|
16
|
+
def initialize(markup)
|
17
|
+
@markup = markup
|
18
|
+
|
19
|
+
parse_source
|
20
|
+
raise "No source image (png, gif, bmp, or jpeg) found in #{@markup}" unless @source
|
21
|
+
|
22
|
+
parse_position
|
23
|
+
parse_float
|
24
|
+
parse_clear
|
25
|
+
parse_dimensions
|
26
|
+
parse_chrome
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def parse_source
|
32
|
+
@source = @markup.scan(Source).map(&:first).compact
|
33
|
+
end
|
34
|
+
|
35
|
+
def parse_position
|
36
|
+
@position = @markup.scan(Position).flatten.last || DEFAULT_POSITION
|
37
|
+
end
|
38
|
+
|
39
|
+
def parse_float
|
40
|
+
@float = @markup.scan(Float).flatten.last
|
41
|
+
end
|
42
|
+
|
43
|
+
def parse_clear
|
44
|
+
@clear = @markup.scan(Clear).flatten.last
|
45
|
+
end
|
46
|
+
|
47
|
+
def parse_dimensions
|
48
|
+
dimensions = @markup.scan(Dimensions).map(&:first).compact
|
49
|
+
@width = dimensions[0]
|
50
|
+
@height = dimensions[1]
|
51
|
+
end
|
52
|
+
|
53
|
+
def parse_chrome
|
54
|
+
@chrome = @markup =~ Chrome
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
metadata
ADDED
@@ -0,0 +1,123 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: octo-captioned-image
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Andrew Esler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-05-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: octopress-ink
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: bundler
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '1.6'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '1.6'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rake
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '10.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '10.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: clash
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '5.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '5.0'
|
83
|
+
description: " octo-captioned-image adds captioned images to octopress v3. It uses
|
84
|
+
the figure and figcaption tags. Styling can be customised. \n"
|
85
|
+
email:
|
86
|
+
- aj@esler.co.nz
|
87
|
+
executables: []
|
88
|
+
extensions: []
|
89
|
+
extra_rdoc_files: []
|
90
|
+
files:
|
91
|
+
- CHANGELOG.md
|
92
|
+
- LICENSE.txt
|
93
|
+
- README.md
|
94
|
+
- assets/stylesheets/main.scss
|
95
|
+
- lib/octo-captioned-image.rb
|
96
|
+
- lib/octo-captioned-image/caption_extractor.rb
|
97
|
+
- lib/octo-captioned-image/caption_options_parser.rb
|
98
|
+
- lib/octo-captioned-image/version.rb
|
99
|
+
homepage: https://github.com/ajesler/octo-captioned-image
|
100
|
+
licenses:
|
101
|
+
- MIT
|
102
|
+
metadata: {}
|
103
|
+
post_install_message:
|
104
|
+
rdoc_options: []
|
105
|
+
require_paths:
|
106
|
+
- lib
|
107
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - ">="
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '0'
|
117
|
+
requirements: []
|
118
|
+
rubyforge_project:
|
119
|
+
rubygems_version: 2.4.5
|
120
|
+
signing_key:
|
121
|
+
specification_version: 4
|
122
|
+
summary: Creates captioned images for octopress v3
|
123
|
+
test_files: []
|