refx-engine-p3lib 0.0.2

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 734b204488da6f1b29f6d6ffefe6f7f6d9b813bd
4
+ data.tar.gz: 71c183b2b724aff901725e526ba6ffd0c294e96a
5
+ SHA512:
6
+ metadata.gz: 1d88aee7d9c9e3ef6b0c186c85abc86ea8a93435395a6ce5f27a031ca43ee27f0ba642dadbe16a1493140a5cb8d58a5b489333f0e9938e758205811120693545
7
+ data.tar.gz: 3c4f0b0ca358a453edeacdc5a50e67ff2c24858c2f045b43f6fe130a6bafdc78ac0337b7b902fee8466d122b8501f73d00e8d84259eea035dd14d480fef89985
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
10
+ *.bundle
11
+ *.so
12
+ *.o
13
+ *.a
14
+ mkmf.log
data/CHANGELOG.md ADDED
@@ -0,0 +1,4 @@
1
+ # CHANGELOG
2
+
3
+ ## 0.0.2 2015-02-11
4
+ - Add zip method
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in refx-engine-p3lib.gemspec
4
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2014 Pim Snel
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,31 @@
1
+ # Refx::Engine::P3lib
2
+
3
+ TODO: Write a gem description
4
+
5
+ ## Installation
6
+
7
+ Add this line to your application's Gemfile:
8
+
9
+ ```ruby
10
+ gem 'refx-engine-p3lib'
11
+ ```
12
+
13
+ And then execute:
14
+
15
+ $ bundle
16
+
17
+ Or install it yourself as:
18
+
19
+ $ gem install refx-engine-p3lib
20
+
21
+ ## Usage
22
+
23
+ TODO: Write usage instructions here
24
+
25
+ ## Contributing
26
+
27
+ 1. Fork it ( https://github.com/[my-github-username]/refx-engine-p3lib/fork )
28
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
29
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
30
+ 4. Push to the branch (`git push origin my-new-feature`)
31
+ 5. Create a new Pull Request
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ require "bundler/gem_tasks"
2
+
Binary file
@@ -0,0 +1,52 @@
1
+ # P3libImage
2
+
3
+ ## library for all helper image classes
4
+
5
+ class P3libImage
6
+
7
+ public
8
+
9
+ def self.p3imgutils_path
10
+ p3imgutils_path = File.expand_path('../../p3imgutils', __FILE__)
11
+ p p3imgutils_path
12
+ return p3imgutils_path
13
+ end
14
+
15
+ def getXYRatio(original_size,newWidth, newHeight)
16
+ return newWidth.to_f / original_size.width.to_f, newHeight.to_f / original_size.height.to_f
17
+ end
18
+
19
+ def self.resizeBitmap(img,pixWidth,pixHeight)
20
+ cmd = "#{self.p3imgutils_path}/p3scale -w#{pixWidth} -h#{pixHeight} -i '#{img}' -o '#{img}'"
21
+ P3libLogger::log("resizing cmd:",cmd)
22
+ system(cmd)
23
+ end
24
+
25
+ def self.resizeBitmapWithOutputType(imgIN,imgOUT,pixWidth,pixHeight,type)
26
+ cmd = "#{self.p3imgutils_path}/p3scale -w#{pixWidth} -h#{pixHeight} -i '#{imgIN}' -o '#{imgOUT}' -t #{type}"
27
+ P3libLogger::log("resizing with type cmd:",cmd)
28
+ system(cmd)
29
+ end
30
+
31
+ def self.resizeBitmapByWidth(img,pixWidth)
32
+ cmd = "#{self.p3imgutils_path}/p3scale -w#{pixWidth} -h0 -i '#{img}' -o '#{img}'"
33
+ P3libLogger::log("resizing cmd:",cmd)
34
+ system(cmd)
35
+ end
36
+
37
+ def self.trimAlphaFromImage(inImage,outImage)
38
+ cmd = "#{self.p3imgutils_path}/p3trimalpha -i '#{inImage}' -o '#{outImage}'"
39
+
40
+ P3libLogger::log("trimming alpha to :",outImage)
41
+ P3libLogger::log("trimming alpha using :",cmd)
42
+ system(cmd)
43
+ end
44
+
45
+ #TODO TEST
46
+ def self.convertImgToFiletype(inImage,outImage,type)
47
+ cmd = "#{self.p3imgutils_path}/p3convfiletype -i '#{inImage}' -o '#{outImage}' -t #{type}"
48
+ P3libLogger::log("convertingh #{inImage} to #{outImage} of type #{type}")
49
+ system(cmd)
50
+ end
51
+
52
+ end
@@ -0,0 +1,159 @@
1
+ # P3libIndesign
2
+
3
+ ## library with indesign class methods
4
+
5
+ class P3libIndesign
6
+
7
+ public
8
+ def self.p3imgutils_path
9
+ p3imgutils_path = File.expand_path('../../p3imgutils', __FILE__)
10
+ return p3imgutils_path
11
+ end
12
+
13
+ #### Latest export method using CoreGraphics cli app
14
+ #orig is the inbetween pdf file which us used to generate a PNG with alpha channel
15
+ def self.export_to_png(inDesignApp, doc, dest)
16
+
17
+ orig = dest+'.pdf'
18
+
19
+ # TODO make preference
20
+ native = false
21
+
22
+ # inDesigns PNG export is only available in CS6 and doesn't work well for layers (in case of embedded PSD's)
23
+ if(native && inDesignApp.to_s == "app(\"/Applications/Adobe InDesign CS6/Adobe InDesign CS6.app\")" && !dest.index('layer'))
24
+
25
+ nativeExportToPNG(inDesignApp, doc, dest)
26
+
27
+ else
28
+ P3libLogger::log('Exporting to PNG using PDF as between file','','debug')
29
+
30
+ inDesignApp.transparency_preference.blending_space.set(:to => :CMYK)
31
+ inDesignApp.PDF_export_preferences.acrobat_compatibility.set(:to => :acrobat_8)
32
+ begin
33
+
34
+ ll = P3LibIndesignlocalization.new(inDesignApp)
35
+ preset = ll.translate('[Smallest File Size]')
36
+ inDesignApp.export(doc, :format => :PDF_type, :to => MacTypes::FileURL.path(orig).hfs_path, :timeout => 0, :showing_options => false, :using => preset)
37
+ rescue Exception => e
38
+ P3libLogger::log('PNG export failed: '+ e.message, 'error')
39
+ end
40
+
41
+ P3libImage::convertImgToFiletype(orig,dest,'png')
42
+ FileUtils.rm(orig)
43
+
44
+ end
45
+ end
46
+
47
+ #### Latest export method using CoreGraphics cli app
48
+ #orig is the inbetween pdf file which us used to generate a PNG with alpha channel
49
+ # FIXME Depreciated
50
+ def self.exportToPNG(inDesignApp, doc, outputPath, orig, dest, pixWidth, pixHeight)
51
+
52
+ # TODO make preference
53
+ native = false
54
+
55
+ # inDesigns PNG export is only available in CS6 and doesn't work well for layers (in case of embedded PSD's)
56
+ if(native && inDesignApp.to_s == "app(\"/Applications/Adobe InDesign CS6/Adobe InDesign CS6.app\")" && !dest.index('layer'))
57
+
58
+ nativeExportToPNG(inDesignApp, doc, dest)
59
+
60
+ else
61
+ P3libLogger::log('Exporting to PNG using PDF as between file','','debug')
62
+
63
+ inDesignApp.transparency_preference.blending_space.set(:to => :CMYK)
64
+ inDesignApp.PDF_export_preferences.acrobat_compatibility.set(:to => :acrobat_8)
65
+ begin
66
+
67
+ ll = P3LibIndesignlocalization.new(inDesignApp)
68
+ preset = ll.translate('[Smallest File Size]')
69
+ inDesignApp.export(doc, :format => :PDF_type, :to => MacTypes::FileURL.path(orig).hfs_path, :timeout => 0, :showing_options => false, :using => preset)
70
+ rescue Exception => e
71
+ P3libLogger::log('PNG export failed: '+ e.message, 'error')
72
+ end
73
+
74
+ P3libImage::convertImgToFiletype(orig,dest,'png')
75
+ FileUtils.rm(orig)
76
+
77
+ end
78
+ end
79
+
80
+ def self.nativeExportToPNG(inDesignApp, doc, dest)
81
+
82
+ if(!dest.index('image'))
83
+
84
+ begin
85
+ inDesignApp.export(doc, :format => :PNG_format, :to => MacTypes::FileURL.path(dest).hfs_path, :timeout => 0, :showing_options => false)
86
+ rescue Exception => e
87
+ P3libLogger::log('PNG export failed: '+ e.message, 'error')
88
+ end
89
+ else
90
+ # If is type image the image could be a PSD which can't be exported using inDesign's PNG export
91
+ # Use HTML export instead (apparently Indesign can export PSD as PNG, it can't do so using the PNG export method)
92
+
93
+ # Turn preview after export off
94
+ doc.HTML_export_preference.view_document_after_export.set(:to => false)
95
+
96
+ # Some other export preferences - not tested yet
97
+ #doc.HTML_export_preference.image_conversion.set(:to => :PNG)
98
+ #doc.HTML_export_preference.image_export_resolution(:to => 150)
99
+ #doc.HTML_export_preference.CSS_export_option.set(:to => :none)
100
+ #doc.HTML_export_preference.ignore_object_conversion_settings.set(:to => false)
101
+ #doc.HTML_export_preference.level.set(:to => 6) #PNG level
102
+
103
+ # Export HTML
104
+ begin
105
+ inDesignApp.export(doc, :format => :HTML, :to => MacTypes::FileURL.path(dest+'.html').hfs_path, :timeout => 0, :showing_options => false)
106
+ rescue Exception => e
107
+ P3libLogger::log('HTML export failed: '+ e.message)
108
+ end
109
+
110
+ # Copy PNG file from the HTML's web-resources folder to destination
111
+ Dir.foreach(dest+'-web-resources/image'){|f|
112
+ if(f != '.' && f != '..')
113
+ FileUtils.cp(dest+'-web-resources/image/'+f, dest)
114
+ end
115
+ }
116
+
117
+ # Clean up - prevents folders postfixed with numbers at reindex
118
+ FileUtils.rm_rf(dest+'-web-resources/')
119
+ FileUtils.rm(dest+'.html')
120
+
121
+ end
122
+ end
123
+
124
+
125
+ def self.placeImageOnItem(item, absolute_img_src)
126
+ if(File.exists?(absolute_img_src) && File.readable?(absolute_img_src) && File.file?(absolute_img_src))
127
+
128
+
129
+ begin
130
+ P3libLogger::log("placing item normal", MacTypes::FileURL.path(absolute_img_src).to_s)
131
+ item.place(MacTypes::FileURL.path(absolute_img_src))
132
+ rescue
133
+ begin
134
+ P3libLogger::log("placing item hfs", MacTypes::FileURL.path(absolute_img_src).hfs_path.to_s)
135
+ item.place(MacTypes::FileURL.path(absolute_img_src).hfs_path)
136
+ rescue
137
+ P3libLogger::log("unable to place item", "")
138
+ end
139
+ end
140
+ else
141
+ P3libLogger::log("image file not usable", absolute_img_src)
142
+ end
143
+ end
144
+
145
+ def self.closeAllDocsNoSave(inDesignApp)
146
+ begin
147
+ inDesignApp.documents.get.each do |doc|
148
+ doc.close(:saving => :no)
149
+ P3libLogger::log("Closing all Indesign open documents:", '')
150
+ end
151
+ rescue
152
+ P3libLogger::log("unable to close all open documents", "",'error')
153
+ end
154
+
155
+ end
156
+
157
+
158
+ end
159
+
@@ -0,0 +1,55 @@
1
+ class P3LibIndesignlocalization
2
+
3
+ def initialize(inDesignApp)
4
+
5
+ @idApp = inDesignApp
6
+ @langcode = guess_langcode
7
+
8
+ create_langhash
9
+ end
10
+
11
+ public
12
+ def translate(string)
13
+
14
+ if(@langcode == 'en')
15
+ return string
16
+ else
17
+ return @langhash[@langcode][string]
18
+ end
19
+ end
20
+
21
+ def guess_langcode
22
+
23
+ # all_pdf_presets = @idApp.PDF_export_presets.name.get
24
+ # P3libLogger::log('First preset',all_pdf_presets[0])
25
+ # if all_pdf_presets.include? '[Smallest File Size]'
26
+ # 'en'
27
+ # elsif all_pdf_presets.include? '[Kleinste bestandsgrootte]'
28
+ # 'nl'
29
+ # else
30
+ # 'unknown'
31
+ # end
32
+
33
+ firstPrinterPreset = @idApp.printer_presets.name.get[0]
34
+ langcode = case firstPrinterPreset
35
+ when "[Default]" then "en"
36
+ when "[Standaard]" then "nl"
37
+ else "Unknown"
38
+ end
39
+
40
+ return langcode
41
+ end
42
+
43
+ private
44
+ def create_langhash
45
+ @langhash = Hash.new
46
+ @langhash['nl'] = Hash.new
47
+ @langhash['nl']['[Low Resolution]'] = '[Lage resolutie]'
48
+ @langhash['nl']['[Medium Resolution]'] = '[Normale resolutie]'
49
+ @langhash['nl']['[High Resolution]'] = '[Hoge resolutie]'
50
+ @langhash['nl']['[Basic Text Frame]'] = '[Basistekstkader]'
51
+ @langhash['nl']['[Basic Graphics Frame]'] = '[Basisafbeeldingskader]'
52
+ # @langhash['nl']['[Smallest File Size]'] = '[Kleinste bestandsgrootte]'
53
+ @langhash['nl']['[Smallest File Size]'] = '[Smallest File Size]'
54
+ end
55
+ end
@@ -0,0 +1,37 @@
1
+ require 'logger'
2
+
3
+ class P3libLogger
4
+ class << self
5
+
6
+ # we use the types info, error, debug, warning
7
+ def log(key, val='', type='info')
8
+
9
+ val = '' if val.nil?
10
+
11
+ logdir = File.expand_path('~')+"/Library/Logs/REFx4"
12
+ logdir2 = File.expand_path('~')+"/Library/REFx4/JobsLogs/"+$REFXjobid.to_s
13
+
14
+ logfile = logdir + '/Engines.log'
15
+ logfile2 = logdir2 + '/engine.log'
16
+
17
+ if(@logger.nil?) then
18
+ @logger = Logger.new(logfile)
19
+ @logger.level = Logger::DEBUG
20
+ end
21
+ if(@logger2.nil?) then
22
+ @logger2 = Logger.new(logfile2)
23
+ @logger2.level = Logger::DEBUG
24
+ end
25
+
26
+ if(!$debug.nil? && type=='debug')
27
+ logstring = "#{type.upcase} - #{key}#{val==''?'':': '+val}"
28
+ @logger.info Time.now.strftime("%b-%d-%Y %H:%M") +' '+ logstring
29
+ @logger2.info Time.now.strftime("%b-%d-%Y %H:%M") +' '+ logstring
30
+ elsif(type!='debug')
31
+ logstring = "#{type.upcase} - #{key}#{val==''?'':': '+val}"
32
+ @logger.info Time.now.strftime("%b-%d-%Y %H:%M") +' '+ logstring
33
+ @logger2.info Time.now.strftime("%b-%d-%Y %H:%M") +' '+ logstring
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,39 @@
1
+ # P3libUtil
2
+
3
+ ## library for all helper classes
4
+ class P3libUtil
5
+
6
+ def self.helper_newtempname(len)
7
+ chars = ('a'..'z').to_a + ('A'..'Z').to_a + ('0'..'9').to_a
8
+ newpass = ''
9
+ 1.upto(len) { |i| newpass << chars[rand(chars.size-1)] }
10
+ return newpass
11
+ end
12
+
13
+ # base64 decode all strings in list
14
+ def self.decode_args(args)
15
+ decoded = []
16
+ args.each do | arg |
17
+ if arg.is_a?(String)
18
+ decoded << Base64.decode64(arg)
19
+ else
20
+ decoded << arg
21
+ end
22
+ end
23
+
24
+ decoded
25
+ end
26
+
27
+ # force all strings to utf in list
28
+ def self.force_utf(args)
29
+ forced = []
30
+ args.each do | arg |
31
+ if arg.is_a?(String)
32
+ arg.force_encoding('UTF-8')
33
+ end
34
+ forced << arg
35
+ end
36
+ forced
37
+ end
38
+ end
39
+
@@ -0,0 +1,13 @@
1
+ # P3libZip create zip archived
2
+
3
+ ## library for all helper zip classes
4
+
5
+ class P3libZip
6
+ public
7
+
8
+ def self.path_to_zipfile(path,zipfilepath)
9
+ P3libLogger::log("Creating zipfile",path)
10
+ cmd = "cd '#{File.dirname(path)}' && /usr/bin/zip -r '#{zipfilepath}' '#{File.basename(path)}'"
11
+ system(cmd)
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Refx
2
+ module Engine
3
+ module P3lib
4
+ VERSION = "0.0.2"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ require "refx/engine/p3lib/version"
2
+ require "refx/engine/p3lib/p3lib_logger"
3
+ require "refx/engine/p3lib/p3lib_indesign"
4
+ require "refx/engine/p3lib/p3lib_util"
5
+ require "refx/engine/p3lib/p3lib_zip"
6
+ require "refx/engine/p3lib/p3lib_image"
7
+ require 'refx/engine/p3lib/p3lib_indesignlocalization'
8
+
9
+ module Refx
10
+ module Engine
11
+ module P3lib
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,23 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'refx/engine/p3lib/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "refx-engine-p3lib"
8
+ spec.version = Refx::Engine::P3lib::VERSION
9
+ spec.authors = ["Pim Snel"]
10
+ spec.email = ["pim@lingewoud.nl"]
11
+ spec.summary = %q{P3 Library bundle for other Engines}
12
+ spec.description = %q{P3 Library bundle for other Engines}
13
+ spec.homepage = "http://www.pas3.org"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0")
17
+ spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ["lib"]
20
+
21
+ spec.add_development_dependency "bundler", "~> 1.7"
22
+ spec.add_development_dependency "rake", "~> 10.0"
23
+ end
metadata ADDED
@@ -0,0 +1,92 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refx-engine-p3lib
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Pim Snel
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-09-14 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.7'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.7'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '10.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '10.0'
41
+ description: P3 Library bundle for other Engines
42
+ email:
43
+ - pim@lingewoud.nl
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".gitignore"
49
+ - CHANGELOG.md
50
+ - Gemfile
51
+ - LICENSE.txt
52
+ - README.md
53
+ - Rakefile
54
+ - lib/refx/engine/p3imgutils/PAS3-refx3imageutils.webloc
55
+ - lib/refx/engine/p3imgutils/p3convfiletype
56
+ - lib/refx/engine/p3imgutils/p3scale
57
+ - lib/refx/engine/p3imgutils/p3trimalpha
58
+ - lib/refx/engine/p3imgutils/pdfrasterize
59
+ - lib/refx/engine/p3lib.rb
60
+ - lib/refx/engine/p3lib/p3lib_image.rb
61
+ - lib/refx/engine/p3lib/p3lib_indesign.rb
62
+ - lib/refx/engine/p3lib/p3lib_indesignlocalization.rb
63
+ - lib/refx/engine/p3lib/p3lib_logger.rb
64
+ - lib/refx/engine/p3lib/p3lib_util.rb
65
+ - lib/refx/engine/p3lib/p3lib_zip.rb
66
+ - lib/refx/engine/p3lib/version.rb
67
+ - refx-engine-p3lib.gemspec
68
+ homepage: http://www.pas3.org
69
+ licenses:
70
+ - MIT
71
+ metadata: {}
72
+ post_install_message:
73
+ rdoc_options: []
74
+ require_paths:
75
+ - lib
76
+ required_ruby_version: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - ">="
79
+ - !ruby/object:Gem::Version
80
+ version: '0'
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ requirements: []
87
+ rubyforge_project:
88
+ rubygems_version: 2.4.3
89
+ signing_key:
90
+ specification_version: 4
91
+ summary: P3 Library bundle for other Engines
92
+ test_files: []