utilitypack 0.5.1

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG ADDED
@@ -0,0 +1,4 @@
1
+ = 0.1
2
+ == 2008-01-19
3
+ * Initial version
4
+ * Project structure in place and a bit of functionality
data/COPYING ADDED
@@ -0,0 +1,18 @@
1
+ Copyright (c) 2008 Brian Pfeil
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining a copy
4
+ of this software and associated documentation files (the "Software"), to
5
+ deal in the Software without restriction, including without limitation the
6
+ rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
7
+ sell copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in
11
+ all copies or substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
16
+ THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README ADDED
@@ -0,0 +1,7 @@
1
+ = Utility Pack
2
+
3
+ Utility pack provides a myriad of utilities for general development.
4
+
5
+ == Utility Pack
6
+
7
+ blah blah blah ...
data/Rakefile ADDED
@@ -0,0 +1,94 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/clean'
5
+ require 'rake/gempackagetask'
6
+
7
+ # get version info from source file
8
+ $:.unshift(File.join(File.dirname(__FILE__), 'lib'))
9
+ require 'utility_pack/version'
10
+
11
+ windows = (PLATFORM =~ /win32|cygwin/)
12
+ BAT = windows ? ".bat" : ""
13
+ SUDO = windows ? "" : "sudo"
14
+
15
+ PKG_NAME = "utilitypack"
16
+ PKG_VERSION = UtilityPack::VERSION::STRING
17
+ CLEAN.include ['*.gem', 'pkg/', 'doc/rdoc']
18
+ RDOC_OPTS = ['--quiet', '--title', "Utility Pack",
19
+ "--opname", "index.html",
20
+ "--line-numbers",
21
+ "--main", "README",
22
+ "--inline-source"]
23
+
24
+ # Test Tasks ---------------------------------------------------------
25
+
26
+ desc "Run all tests"
27
+ task :test_all => [:test_units]
28
+ task :ta => [:test_all]
29
+
30
+ task :tu => [:test_units]
31
+
32
+ Rake::TestTask.new("test_units") do |t|
33
+ t.test_files = FileList['test/test*.rb']
34
+ t.verbose = false
35
+ end
36
+
37
+
38
+
39
+ desc "Packages up Utility Pack."
40
+ task :default => [:package]
41
+
42
+ desc "creates package"
43
+ task :package => [:clean]
44
+
45
+ desc "creates documentation"
46
+ task :doc => [:rdoc]
47
+
48
+ Rake::RDocTask.new do |rdoc|
49
+ rdoc.rdoc_dir = 'doc/rdoc'
50
+ rdoc.options += RDOC_OPTS
51
+ rdoc.main = "README"
52
+ rdoc.title = "Utility Pack"
53
+ rdoc.rdoc_files.add ['README', 'CHANGELOG', 'COPYING', 'lib/**/*.rb']
54
+ end
55
+
56
+ spec =
57
+ Gem::Specification.new do |s|
58
+ s.name = PKG_NAME
59
+ s.version = PKG_VERSION
60
+ s.platform = Gem::Platform::RUBY
61
+ s.has_rdoc = true
62
+ s.extra_rdoc_files = ["README", "CHANGELOG", "COPYING"]
63
+ s.rdoc_options = RDOC_OPTS
64
+ s.summary = "Library of useful utilities"
65
+ s.description = s.summary
66
+ s.author = "Brian Pfeil"
67
+ s.email = 'brian.pfeil@gmail.com'
68
+ s.homepage = 'http://brianpfeil.com'
69
+ #s.executables = ['desktopsearch']
70
+ s.required_ruby_version = '>= 1.8.2'
71
+ s.files = %w(COPYING README Rakefile) +
72
+ Dir.glob("{bin,doc,test,lib,examples,extras,share,contrib}/**/*") +
73
+ Dir.glob("ext/**/*.{h,c,rb}") +
74
+ Dir.glob("examples/**/*.rb") +
75
+ Dir.glob("tools/*.rb")
76
+ s.require_path = "lib"
77
+ s.bindir = "bin"
78
+ end
79
+
80
+ Rake::GemPackageTask.new(spec) do |p|
81
+ p.need_tar = false
82
+ p.need_zip = false
83
+ p.gem_spec = spec
84
+ end
85
+
86
+ desc "installs gem"
87
+ task :install => [:package] do
88
+ sh %{gem#{BAT} install pkg/#{PKG_NAME}-#{PKG_VERSION}}
89
+ end
90
+
91
+ desc "uninstalls gem"
92
+ task :uninstall => [:clean] do
93
+ sh %{#{SUDO} gem#{BAT} uninstall #{PKG_NAME} -x}
94
+ end
data/examples/7zip.rb ADDED
@@ -0,0 +1,27 @@
1
+ require 'fileutils'
2
+ require 'utility_pack'
3
+
4
+ include FileUtils
5
+
6
+ def run archive_path, paths, type
7
+ puts "Deleting #{archive_path}"
8
+ rm_f archive_path
9
+ if File.exists?(archive_path)
10
+ puts "Failed to delete #{archive_path}. Exiting."
11
+ exit
12
+ else
13
+ puts "Successfully deleted #{archive_path}"
14
+ end
15
+
16
+ UtilityPack::SevenZip.send(type, archive_path, paths)
17
+ puts "Size of #{archive_path} is #{File.stat(archive_path).size/(1024.0*1024.0)} MB"
18
+ end
19
+
20
+ paths = [["c:\\temp\\ifb"], "C:\\Program Files\\7-Zip"]
21
+
22
+ # create regular zip file
23
+ run "c:\\temp\\a.zip", paths, :zip
24
+
25
+ # create self extracting file
26
+ run "c:\\temp\\a.exe", paths, :sfx
27
+
data/examples/rar.rb ADDED
@@ -0,0 +1,26 @@
1
+ require 'fileutils'
2
+ require 'utility_pack'
3
+
4
+ include FileUtils
5
+
6
+ def run archive_path, paths, type
7
+ puts "Deleting #{archive_path}"
8
+ rm_f archive_path
9
+ if File.exists?(archive_path)
10
+ puts "Failed to delete #{archive_path}. Exiting."
11
+ exit
12
+ else
13
+ puts "Successfully deleted #{archive_path}"
14
+ end
15
+
16
+ UtilityPack::Rar.send(type, archive_path, paths)
17
+ puts "Size of #{archive_path} is #{File.stat(archive_path).size/(1024.0*1024.0)} MB"
18
+ end
19
+
20
+ paths = [["c:\\temp\\ifb"], "C:\\Program Files\\7-Zip"]
21
+
22
+ # create regular zip file
23
+ run "c:\\temp\\a.rar", paths, :rar
24
+
25
+ # create self extracting file
26
+ run "c:\\temp\\a.exe", paths, :sfx
@@ -0,0 +1,8 @@
1
+ $:.unshift(File.dirname(__FILE__))
2
+
3
+ require 'utility_pack/datetime'
4
+ require 'utility_pack/core_ext'
5
+ require 'utility_pack/win32'
6
+ require 'utility_pack/rar'
7
+ require 'utility_pack/7zip'
8
+ require 'utility_pack/ie'
@@ -0,0 +1,18 @@
1
+ module UtilityPack
2
+ # Wrapper around the rar archiving and compression utility
3
+ module SevenZip
4
+ include UtilityPack::Win32
5
+
6
+ # creates a 7-zip archive for the specified files/directories
7
+ # archive_path - archive file that'll be created
8
+ # *paths - files/directories to archive
9
+ def self.zip archive_path, *paths
10
+ CoreHelpers.s "7za a -tzip \"#{archive_path}\" " +paths.flatten.collect{|p| "\"#{p}\""}.join(' ')
11
+ end
12
+
13
+ def self.sfx archive_path, *paths
14
+ CoreHelpers.s "7za a -sfx7z.sfx \"#{archive_path}\" " +paths.flatten.collect{|p| "\"#{p}\""}.join(' ')
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,4 @@
1
+ Dir[File.dirname(__FILE__) + "/core_ext/*.rb"].sort.each do |path|
2
+ filename = File.basename(path)
3
+ require "utility_pack/core_ext/#{filename}"
4
+ end
@@ -0,0 +1,36 @@
1
+ module UtilityPack
2
+ module CoreExtensions
3
+ module Array
4
+
5
+ # returns a random element from the array
6
+ # if count is specified, a array of unique random elements is returned
7
+ def random(count = 1)
8
+
9
+ raise "Invalid argument (count must be >1)" if count < 1
10
+
11
+ if count == 1
12
+ self[rand(self.size)]
13
+ else
14
+ raise "Invalid argument. The size of the array is #{self.size} and \
15
+ you are requesting #{count} random elements" if count > self.size
16
+
17
+ r = []
18
+ while r.size != count
19
+ tmp = self[rand(self.size)]
20
+ r << tmp unless r.include?(tmp)
21
+ end
22
+
23
+ if count == 1
24
+ r = r[0]
25
+ end
26
+ r
27
+ end
28
+ end
29
+
30
+ end
31
+ end
32
+ end
33
+
34
+ class Array #:nodoc:
35
+ include UtilityPack::CoreExtensions::Array
36
+ end
@@ -0,0 +1,27 @@
1
+ module UtilityPack
2
+ module CoreExtensions
3
+ module File
4
+
5
+ module InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def read_file(path)
11
+ ::File.open(path, 'r') {|f| f.read }
12
+ end
13
+
14
+ def write_file(path, s)
15
+ ::File.open(path, 'w') {|f| f.write(s) }
16
+ end
17
+
18
+ end
19
+
20
+ end
21
+ end
22
+ end
23
+
24
+ class File #:nodoc:
25
+ include UtilityPack::CoreExtensions::File::InstanceMethods
26
+ extend UtilityPack::CoreExtensions::File::ClassMethods
27
+ end
@@ -0,0 +1,25 @@
1
+ module UtilityPack
2
+ module CoreExtensions
3
+ module Hash
4
+
5
+ module InstanceMethods
6
+ end
7
+
8
+ module ClassMethods
9
+
10
+ def transform_keys_to_symbols(value)
11
+ return value if not value.is_a?(::Hash)
12
+ hash = value.inject({}){|memo,(k,v)| memo[k.to_sym] = self.transform_keys_to_symbols(v); memo}
13
+ return hash
14
+ end
15
+
16
+ end
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ class Hash #:nodoc:
23
+ include UtilityPack::CoreExtensions::Hash::InstanceMethods
24
+ extend UtilityPack::CoreExtensions::Hash::ClassMethods
25
+ end
@@ -0,0 +1,21 @@
1
+ module UtilityPack
2
+ module CoreExtensions
3
+ module String
4
+
5
+ # returns a new string instance populated with the provided variable values.
6
+ # template variables are of the form :<variable name>. e.g. :name
7
+ def fill(values = {})
8
+ s = self.clone
9
+ values.each do |key, value|
10
+ s.gsub!(":#{key}", value.to_s) if value.respond_to? :to_s
11
+ end
12
+ s
13
+ end
14
+
15
+ end
16
+ end
17
+ end
18
+
19
+ class String #:nodoc:
20
+ include UtilityPack::CoreExtensions::String
21
+ end
@@ -0,0 +1,27 @@
1
+ module UtilityPack
2
+ module DateTimeHelpers
3
+
4
+ class HourMinSec < Time
5
+
6
+ def <=>(other)
7
+ # only compare based on hour, minutes, and seconds (leave date portion off)
8
+ self_seconds = (self.hour * (60 * 60)) + (self.min * 60) + self.sec
9
+ other_seconds = (other.hour * (60 * 60)) + (other.min * 60) + other.sec
10
+
11
+ if self_seconds < other_seconds
12
+ return -1
13
+ elsif self_seconds == other_seconds
14
+ return 0
15
+ else
16
+ return 1
17
+ end
18
+ end
19
+
20
+ end
21
+
22
+ def self.timestamp_for_filename
23
+ Time.now.strftime("%Y-%m-%d_%H.%M.%S")
24
+ end
25
+
26
+ end
27
+ end
@@ -0,0 +1,19 @@
1
+ require 'fileutils'
2
+
3
+ module UtilityPack
4
+ module InternetExplorerHelpers
5
+ include UtilityPack::Win32
6
+
7
+ CACHE_DIRECTORIES = [
8
+ "c:/windows/Temporary Internet Files",
9
+ "C:/Documents and Settings/#{ENV['USERNAME']}/Local Settings/Temporary Internet Files"
10
+ ]
11
+
12
+ def self.clear_cache
13
+ CACHE_DIRECTORIES.each do |dir|
14
+ FileHelpers.delete Dir["#{dir}/**/*"] if File.exists?(dir)
15
+ end
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'rubygems'
2
+ require 'json/pure'
3
+ require 'utility_pack/core_ext/file'
4
+
5
+ module UtilityPack
6
+
7
+ class PersistentHash
8
+ def initialize path
9
+ @path = path
10
+ end
11
+
12
+ def json_parse_file(path)
13
+ JSON.parse(File.read_file(path))
14
+ end
15
+
16
+ def load
17
+ File.exists?(@path) ? json_parse_file(@path) : {}
18
+ end
19
+
20
+ def save h
21
+ File.write_file @path, h.to_json
22
+ end
23
+
24
+ def [](key)
25
+ load[key]
26
+ end
27
+
28
+ def []=(key, value)
29
+ h = load
30
+ h[key] = value
31
+ save(h)
32
+ end
33
+
34
+ end
35
+
36
+ end
@@ -0,0 +1,18 @@
1
+ module UtilityPack
2
+ # Wrapper around the rar archiving and compression utility
3
+ module Rar
4
+ include UtilityPack::Win32
5
+
6
+ # creates a rar archive for the specified files/directories
7
+ # archive_path - archive file that'll be created
8
+ # *paths - files/directories to archive
9
+ def self.rar archive_path, *paths
10
+ CoreHelpers.s "rar a -m5 \"#{archive_path}\" " +paths.flatten.collect{|p| "\"#{p}\""}.join(' ')
11
+ end
12
+
13
+ def self.sfx archive_path, *paths
14
+ CoreHelpers.s "rar a -sfx \"#{archive_path}\" " +paths.flatten.collect{|p| "\"#{p}\""}.join(' ')
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,9 @@
1
+ module UtilityPack
2
+ module VERSION #:nodoc:
3
+ MAJOR = 0
4
+ MINOR = 5
5
+ TINY = 1
6
+
7
+ STRING = [MAJOR, MINOR, TINY].join('.')
8
+ end
9
+ end
@@ -0,0 +1,5 @@
1
+ $:.unshift(File.dirname(__FILE__)) unless
2
+ $:.include?(File.dirname(__FILE__)) || $:.include?(File.expand_path(File.dirname(__FILE__)))
3
+
4
+ # NOTE: order of requires is important
5
+ %w( core process shell file ).each { |f| require "utility_pack/win32/#{f}_helpers" }
@@ -0,0 +1,11 @@
1
+ module UtilityPack
2
+ module Win32
3
+ module CoreHelpers
4
+
5
+ def self.s(*argv)
6
+ system(*argv)
7
+ end
8
+
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,35 @@
1
+ require 'fileutils'
2
+
3
+ module UtilityPack
4
+ module Win32
5
+ module FileHelpers
6
+
7
+ MAX_DELETE_FILE_RETRIES = 20
8
+
9
+ def delete_file path
10
+ count = 0
11
+ while File.exist?(path) && count < MAX_DELETE_FILE_RETRIES do
12
+ puts "Deleting file #{path}"
13
+ rm_f path
14
+ count = count + 1
15
+ end
16
+ end
17
+
18
+ def delete_directory path
19
+ puts "Deleting directory #{path}"
20
+ rm_rf path if File.directory?(path)
21
+ end
22
+
23
+ def delete(*args)
24
+ args.flatten.each do |path|
25
+ delete_file path unless File.directory?(path)
26
+ delete_directory path if File.directory?(path)
27
+ end
28
+ end
29
+
30
+ # add all instance methods as singleton methods also
31
+ self.extend(self)
32
+ include FileUtils
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,14 @@
1
+ module UtilityPack
2
+ module Win32
3
+ module ProcessHelpers
4
+ include UtilityPack::Win32
5
+
6
+ def self.kill(*images)
7
+ images.flatten.each do |image|
8
+ CoreHelpers.s "taskkill /IM #{image} /F /T"
9
+ end
10
+ end
11
+
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,32 @@
1
+ module UtilityPack
2
+ module Win32
3
+ module ShellHelpers
4
+ include UtilityPack::Win32::CoreHelpers
5
+
6
+ def cmd_then_exit(cmd, *options)
7
+ options << "/c"
8
+ s "cmd #{options.join(' ')} #{cmd}"
9
+ end
10
+
11
+ def cmd_then_remain(cmd, *options)
12
+ options << "/k"
13
+ s "cmd #{options.join(' ')} #{cmd}"
14
+ end
15
+
16
+ def start_async(cmd, *options)
17
+ s "cmd /c start \"\" #{options.join(' ')} #{cmd}"
18
+ end
19
+
20
+ def start_and_wait(cmd, *options)
21
+ options << "/wait"
22
+ start_async(cmd, options)
23
+ end
24
+
25
+ def cmd_prompt_here(*options)
26
+ directory_path = ENV['dir'] || ''
27
+ cmd_then_remain "(cd /d #{directory_path} & cls)", options
28
+ end
29
+
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,21 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'utility_pack/core_ext/array'
5
+
6
+ class TestCoreExtensionsArray < Test::Unit::TestCase
7
+
8
+ def test_random
9
+ # functional
10
+ assert([1].random == 1)
11
+ assert([].random == nil)
12
+ assert([1].random(1) == 1)
13
+ assert([1,2,3].random(3).sort == [1,2,3])
14
+
15
+ # bounds checking
16
+ assert_raise(RuntimeError) { [1].random(0) }
17
+ assert_raise(RuntimeError) { [1].random(-1) }
18
+ assert_raise(RuntimeError) { [1].random(2) }
19
+ end
20
+
21
+ end
@@ -0,0 +1,27 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'utility_pack/core_ext/file'
5
+
6
+ require 'tempfile'
7
+
8
+
9
+ class TestCoreExtensionsFile < Test::Unit::TestCase
10
+
11
+ def test_write_file
12
+ s = "hello world"
13
+ file = Tempfile.new('test_write_file')
14
+ File.write_file(file.path, s)
15
+ assert_equal s, File.open(file.path) {|f| f.read}
16
+ end
17
+
18
+
19
+ def test_read_file
20
+ s = "hello world"
21
+ file = Tempfile.new('test_read_file')
22
+ file.write(s)
23
+ file.close
24
+ assert_equal s, File.read_file(file.path)
25
+ end
26
+
27
+ end
@@ -0,0 +1,15 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'utility_pack/core_ext/hash'
5
+
6
+ class TestCoreExtensionsHash < Test::Unit::TestCase
7
+
8
+ def test_transform_keys_to_symbols
9
+ h1 = {'name' => 'brian', 'age' => 33, 'son' => {'name', 'wyatt'}}
10
+ h2 = Hash.transform_keys_to_symbols(h1)
11
+ assert_equal h1['name'], h2[:name]
12
+ assert_equal 'wyatt', h2[:son][:name]
13
+ end
14
+
15
+ end
@@ -0,0 +1,13 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'utility_pack/core_ext/string'
5
+
6
+ class TestCoreExtensionsString < Test::Unit::TestCase
7
+
8
+ def test_fill
9
+ assert_equal "hello world", "hello :name".fill(:name => 'world')
10
+ assert_equal "1 2 3 3 2 1", ":one 2 3 3 2 :one".fill(:one => '1')
11
+ end
12
+
13
+ end
@@ -0,0 +1,20 @@
1
+ $:.unshift File.join(File.dirname(__FILE__),'..','lib')
2
+
3
+ require 'test/unit'
4
+ require 'utility_pack/persistenthash'
5
+
6
+ class TestPersistentHash < Test::Unit::TestCase
7
+ include UtilityPack
8
+
9
+ def test_save
10
+ file = Tempfile.new('test_save')
11
+ path = file.path
12
+ file.close
13
+ file.unlink
14
+ ph = PersistentHash.new(path)
15
+ value = 'brian'
16
+ ph[:name] = {:value => value}
17
+ assert_equal ph['name']['value'], value
18
+ end
19
+
20
+ end
metadata ADDED
@@ -0,0 +1,101 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: utilitypack
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 5
8
+ - 1
9
+ version: 0.5.1
10
+ platform: ruby
11
+ authors:
12
+ - Brian Pfeil
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2011-11-06 01:00:00 -04:00
18
+ default_executable:
19
+ dependencies: []
20
+
21
+ description: Library of useful utilities
22
+ email: brian.pfeil@gmail.com
23
+ executables: []
24
+
25
+ extensions: []
26
+
27
+ extra_rdoc_files:
28
+ - README
29
+ - CHANGELOG
30
+ - COPYING
31
+ files:
32
+ - COPYING
33
+ - README
34
+ - Rakefile
35
+ - test/test_core_extensions_array.rb
36
+ - test/test_core_extensions_file.rb
37
+ - test/test_core_extensions_hash.rb
38
+ - test/test_core_extensions_string.rb
39
+ - test/test_persistenthash.rb
40
+ - lib/utility_pack/7zip.rb
41
+ - lib/utility_pack/core_ext/array.rb
42
+ - lib/utility_pack/core_ext/file.rb
43
+ - lib/utility_pack/core_ext/hash.rb
44
+ - lib/utility_pack/core_ext/string.rb
45
+ - lib/utility_pack/core_ext.rb
46
+ - lib/utility_pack/datetime.rb
47
+ - lib/utility_pack/ie.rb
48
+ - lib/utility_pack/persistenthash.rb
49
+ - lib/utility_pack/rar.rb
50
+ - lib/utility_pack/version.rb
51
+ - lib/utility_pack/win32/core_helpers.rb
52
+ - lib/utility_pack/win32/file_helpers.rb
53
+ - lib/utility_pack/win32/process_helpers.rb
54
+ - lib/utility_pack/win32/shell_helpers.rb
55
+ - lib/utility_pack/win32.rb
56
+ - lib/utility_pack.rb
57
+ - examples/7zip.rb
58
+ - examples/rar.rb
59
+ - CHANGELOG
60
+ has_rdoc: true
61
+ homepage: http://brianpfeil.com
62
+ licenses: []
63
+
64
+ post_install_message:
65
+ rdoc_options:
66
+ - --quiet
67
+ - --title
68
+ - Utility Pack
69
+ - --opname
70
+ - index.html
71
+ - --line-numbers
72
+ - --main
73
+ - README
74
+ - --inline-source
75
+ require_paths:
76
+ - lib
77
+ required_ruby_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ segments:
82
+ - 1
83
+ - 8
84
+ - 2
85
+ version: 1.8.2
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - ">="
89
+ - !ruby/object:Gem::Version
90
+ segments:
91
+ - 0
92
+ version: "0"
93
+ requirements: []
94
+
95
+ rubyforge_project:
96
+ rubygems_version: 1.3.6
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Library of useful utilities
100
+ test_files: []
101
+