imagegallery2017 0.1.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
- checksums.yaml.gz.sig +1 -0
- data/lib/imagegallery2017.rb +132 -0
- data.tar.gz.sig +0 -0
- metadata +108 -0
- metadata.gz.sig +1 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c64866d24daa270f45c2d7386f42e0220a234ea6
|
4
|
+
data.tar.gz: d06228379b691a7e07d96bd0d2877e5aa7d73980
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ea97d10774269fb72314f9f2ee984b01b0854c9596f73d528127ae8d0e2f8c8eb4f65237c4b306820e1f34cac9bfc231c261b14832f47c42a996562ab4962043
|
7
|
+
data.tar.gz: 9eac57300a679e1ca246c26d2c48dddbb43a53f769bd927530ba4b2e6ab556121d0d314deb0acf43cc59da7d3815f060e81ae64527044113548d4d404e46f6d8
|
checksums.yaml.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
����ԂS*5)���o'�9�j|+��-���<�ۧ͘��W�5��J��$оC�ޕݥ�N���9w���Y��.@�������ux��t6�!�
|
@@ -0,0 +1,132 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
# file: imagegallery2017.rb
|
4
|
+
|
5
|
+
# description: This is just a personal project on how I'm building an
|
6
|
+
# image gallery which uses XML to store filenames and an
|
7
|
+
# external DRb service to process images. It's designed
|
8
|
+
# to be used with Rack.
|
9
|
+
|
10
|
+
require 'dynarex'
|
11
|
+
require 'nokogiri'
|
12
|
+
require 'fileutils'
|
13
|
+
|
14
|
+
|
15
|
+
class ImageGallery2017
|
16
|
+
|
17
|
+
class Gallery < Dynarex
|
18
|
+
|
19
|
+
attr_reader :folder
|
20
|
+
|
21
|
+
def initialize(rsc, filepath: '.', xslfile: 'index.xslt',
|
22
|
+
schema: nil, title: nil)
|
23
|
+
|
24
|
+
@rsc = rsc
|
25
|
+
@wwwpath = File.join(filepath, 'www')
|
26
|
+
@xslfile = xslfile
|
27
|
+
|
28
|
+
@folder = ''
|
29
|
+
|
30
|
+
a = [@wwwpath, 'images']
|
31
|
+
|
32
|
+
if title then
|
33
|
+
|
34
|
+
@folder = title.downcase.gsub(/\W/,'-').gsub(/-{2,}/,'-')\
|
35
|
+
.gsub(/^-|-$/,'')
|
36
|
+
|
37
|
+
a << @folder
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
@imagespath = File.join(*a)
|
42
|
+
|
43
|
+
FileUtils.mkdir_p @imagespath
|
44
|
+
|
45
|
+
dxfilepath = File.join(@imagespath, 'dynarex.xml')
|
46
|
+
|
47
|
+
if schema then
|
48
|
+
|
49
|
+
super(schema)
|
50
|
+
self.order = :descending
|
51
|
+
self.title = title || 'Image gallery'
|
52
|
+
self.summary[:folder] = @folder
|
53
|
+
self.save dxfilepath
|
54
|
+
|
55
|
+
else
|
56
|
+
super(dxfilepath)
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
def add_entry(uploaded)
|
62
|
+
|
63
|
+
filename = uploaded[:filename]
|
64
|
+
file = File.join(@imagespath, filename)
|
65
|
+
File.write file, uploaded[:tempfile].read
|
66
|
+
|
67
|
+
preview_file, desktop_file = @rsc.rmagick.resize file,
|
68
|
+
['140x110','640x480']
|
69
|
+
|
70
|
+
h = {original: filename, desktop: desktop_file,
|
71
|
+
preview: preview_file}
|
72
|
+
|
73
|
+
self.create(h)
|
74
|
+
self.save
|
75
|
+
end
|
76
|
+
|
77
|
+
def render()
|
78
|
+
|
79
|
+
doc = Nokogiri::XML(self.to_xml)
|
80
|
+
xslt = Nokogiri::XSLT(File.read(File.join(@wwwpath, @xslfile)))
|
81
|
+
xslt.transform(doc).to_s
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
end
|
86
|
+
|
87
|
+
class IndexGallery < Gallery
|
88
|
+
|
89
|
+
def initialize(rsc, filepath: '.')
|
90
|
+
|
91
|
+
FileUtils.mkdir_p File.join(filepath, 'www','images')
|
92
|
+
FileUtils.mkdir_p File.join(filepath, 'www','xsl')
|
93
|
+
super(rsc, filepath: filepath, schema: 'images[title, folder]/image' +
|
94
|
+
'(original, desktop, preview)')
|
95
|
+
|
96
|
+
end
|
97
|
+
|
98
|
+
def modify_entry(id)
|
99
|
+
#self.find_by_id()
|
100
|
+
end
|
101
|
+
|
102
|
+
def render()
|
103
|
+
|
104
|
+
File.write File.join(@wwwpath, 'index.html'), super()
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
attr_reader :index, :gallery
|
111
|
+
|
112
|
+
def initialize(rsc, basepath='.')
|
113
|
+
|
114
|
+
@basepath, @rsc = basepath, rsc
|
115
|
+
@index = IndexGallery.new rsc, filepath: @basepath
|
116
|
+
|
117
|
+
end
|
118
|
+
|
119
|
+
def add_entry(params)
|
120
|
+
@index.add_entry params
|
121
|
+
end
|
122
|
+
|
123
|
+
def create_folder(title)
|
124
|
+
|
125
|
+
fg = Gallery.new @rsc, schema: 'images[title, folder]/image(original, ' +
|
126
|
+
'desktop, preview)', filepath: @basepath, title: title,
|
127
|
+
xslfile: 'images.xsl'
|
128
|
+
|
129
|
+
@gallery[fg.folder] = fg
|
130
|
+
|
131
|
+
end
|
132
|
+
end
|
data.tar.gz.sig
ADDED
Binary file
|
metadata
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: imagegallery2017
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- James Robertson
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain:
|
11
|
+
- |
|
12
|
+
-----BEGIN CERTIFICATE-----
|
13
|
+
MIIDljCCAn6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTE3MTEyNjIyMzgxMVoXDTE4MTEyNjIyMzgxMVowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
|
18
|
+
ggEBALmKqRFDoROi/Y1nBmZd2iSSE9JEftb2QyQKDydXilQbHqolAHzDvkNDW+QH
|
19
|
+
H1FcoH1SLn0JX1EUUeeVMbJwFaIvpyQPEt4IqZn/lRigvZqw2B+gslMv/tp/9Zo2
|
20
|
+
CwiNyQySH4BsQ2fd0o1atycv49o9OQCsIqyqMFWm1oXgCw5FgW+UTrBWwIfProSG
|
21
|
+
Gb/o2nJrT3inwcNxWMFN0axUWG/V2rbHupM+JV1PA5aRC+vRijgZyX8JMSaJ0og8
|
22
|
+
q3f5tP3Ve6bcEz7iu1EksEPrafSickU1bGIZtrX3yBswjxZFp8xPVeSWcje2W6l0
|
23
|
+
T9Whkj7jzqFeX41zjTQmoYyDh40CAwEAAaOBijCBhzAJBgNVHRMEAjAAMAsGA1Ud
|
24
|
+
DwQEAwIEsDAdBgNVHQ4EFgQUc31kagMvnrH6RjVpP644nRtDtdIwJgYDVR0RBB8w
|
25
|
+
HYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1h
|
26
|
+
c3RlckBqYW1lc3JvYmVydHNvbi5ldTANBgkqhkiG9w0BAQUFAAOCAQEAHGO1w5+g
|
27
|
+
JOtbtcA+ZMt0rsnUM6nSXPjOOcrUVu2tyxI315QXlSdacpRXulmQlyP4LGTUkuDp
|
28
|
+
yPgKHveaPdxAGYBHBJ4dwxoFruXq/5JuuD6/8YEAUEWC8BqZSNEvylgVMi+gAfXd
|
29
|
+
VtjDcJZdilPhknIADvLv9qNsiu07DqyJWpZ587QoYlnRcFUT/rDTLBAejpWB/8ke
|
30
|
+
9SEtob04Aw9pQ6JhqOzpltW5VbIWL0sLsrrRaOFnF4Y/l5DtzcJu5rd0DlduLpbj
|
31
|
+
VTkGIYZRz9NszbK5QM45fZIG1TtUO/QILU1lyb56RusdsPUAQy5qdHcWSkqbU1i4
|
32
|
+
pVP5LTt/M0l+og==
|
33
|
+
-----END CERTIFICATE-----
|
34
|
+
date: 2017-11-26 00:00:00.000000000 Z
|
35
|
+
dependencies:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: dynarex
|
38
|
+
requirement: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '1.7'
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 1.7.26
|
46
|
+
type: :runtime
|
47
|
+
prerelease: false
|
48
|
+
version_requirements: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - "~>"
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '1.7'
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: 1.7.26
|
56
|
+
- !ruby/object:Gem::Dependency
|
57
|
+
name: nokogiri
|
58
|
+
requirement: !ruby/object:Gem::Requirement
|
59
|
+
requirements:
|
60
|
+
- - "~>"
|
61
|
+
- !ruby/object:Gem::Version
|
62
|
+
version: '1.8'
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: 1.8.1
|
66
|
+
type: :runtime
|
67
|
+
prerelease: false
|
68
|
+
version_requirements: !ruby/object:Gem::Requirement
|
69
|
+
requirements:
|
70
|
+
- - "~>"
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
version: '1.8'
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 1.8.1
|
76
|
+
description:
|
77
|
+
email: james@jamesrobertson.eu
|
78
|
+
executables: []
|
79
|
+
extensions: []
|
80
|
+
extra_rdoc_files: []
|
81
|
+
files:
|
82
|
+
- lib/imagegallery2017.rb
|
83
|
+
homepage: https://github.com/jrobertson/imagegallery2017
|
84
|
+
licenses:
|
85
|
+
- MIT
|
86
|
+
metadata: {}
|
87
|
+
post_install_message:
|
88
|
+
rdoc_options: []
|
89
|
+
require_paths:
|
90
|
+
- lib
|
91
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
version: '0'
|
101
|
+
requirements: []
|
102
|
+
rubyforge_project:
|
103
|
+
rubygems_version: 2.6.13
|
104
|
+
signing_key:
|
105
|
+
specification_version: 4
|
106
|
+
summary: An experimental personal project to build a basic ImageGallery. Uses an external
|
107
|
+
object for processing images sizes.
|
108
|
+
test_files: []
|
metadata.gz.sig
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
B��$��@�]��K�1}- �L!o�`�Wt�b����2ꐁ�c'��u���!�F8x��02�����[AY��I�)S�!;��*ҕ6��+V��BF��y�ۇ�`����]$Y?>�4��ØBz�s|+KP��jV��٬s�0r8�o�w�����W�P���}��]�A��`A ��W@s}p`_�q`�ȶ���W��ZuF�R�p�͐�$��oU-���Mt�/�^?�z�q���/�E|9�&��ȑ�
|