joshua-transmogrify 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +6 -0
- data/README.txt +77 -0
- data/Rakefile +11 -0
- data/bin/transmogrify +11 -0
- data/lib/transmogrifiers/douchy_numbers.rb +9 -0
- data/lib/transmogrifiers/piglatin.rb +22 -0
- data/lib/transmogrifiers/rot13.rb +7 -0
- data/lib/transmogrify.rb +103 -0
- data/test/test_transmogrify.rb +125 -0
- data/test/transmigrifiers/test_piglatin.rb +28 -0
- data/test/transmigrifiers/test_rot13.rb +28 -0
- data/transmogrify.gemspec +46 -0
- metadata +120 -0
data/History.txt
ADDED
data/README.txt
ADDED
@@ -0,0 +1,77 @@
|
|
1
|
+
= transmogrify
|
2
|
+
|
3
|
+
* http://github.com/zenspider/transmogrify/tree/master
|
4
|
+
* http://rubyforge.org/projects/seattlerb
|
5
|
+
|
6
|
+
== DESCRIPTION:
|
7
|
+
|
8
|
+
Transmogrify unfactors your code, providing you with much needed job
|
9
|
+
security in today's volatile economy.
|
10
|
+
|
11
|
+
== FEATURES/PROBLEMS:
|
12
|
+
|
13
|
+
* Transmogrify rewrites your code using Advanced Technology(tm).
|
14
|
+
* lvar and ivar renaming:
|
15
|
+
* numbered sequences
|
16
|
+
* pig latin
|
17
|
+
* rot13
|
18
|
+
* replace true and false with !!?! and !!!?!
|
19
|
+
* combinations of builders (rot13 a douchified name, etc)
|
20
|
+
* transmogrify command line tool transmogrifies and replaces the old code!
|
21
|
+
|
22
|
+
== TODO/IDEAS
|
23
|
+
|
24
|
+
* loop unrolling
|
25
|
+
* hash -> array conversion
|
26
|
+
* misuse of raise/rescue, try/catch
|
27
|
+
* private method renaming
|
28
|
+
* namespacing
|
29
|
+
* unnamespacing
|
30
|
+
* renamespacing
|
31
|
+
* comment removal - this is done via r2r whether we like it or not atm
|
32
|
+
* comment addition
|
33
|
+
* project restructuring
|
34
|
+
* rakefile obfuscation - convolute the build and running tests etc.
|
35
|
+
* ungemification
|
36
|
+
* randomize method order
|
37
|
+
* math identities (*1, +0) and other fun, pi=3
|
38
|
+
* replace real word variables with antonyms
|
39
|
+
|
40
|
+
== SYNOPSIS:
|
41
|
+
|
42
|
+
% transmogrify lib/blah.rb
|
43
|
+
|
44
|
+
== REQUIREMENTS:
|
45
|
+
|
46
|
+
* ruby2ruby
|
47
|
+
* sexp_processor
|
48
|
+
* ruby_parser
|
49
|
+
|
50
|
+
== INSTALL:
|
51
|
+
|
52
|
+
* sudo gem install transmogrify
|
53
|
+
|
54
|
+
== LICENSE:
|
55
|
+
|
56
|
+
(The MIT License)
|
57
|
+
|
58
|
+
Copyright (c) 2008 Ryan Davis, Rein Henrichs
|
59
|
+
|
60
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
61
|
+
a copy of this software and associated documentation files (the
|
62
|
+
'Software'), to deal in the Software without restriction, including
|
63
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
64
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
65
|
+
permit persons to whom the Software is furnished to do so, subject to
|
66
|
+
the following conditions:
|
67
|
+
|
68
|
+
The above copyright notice and this permission notice shall be
|
69
|
+
included in all copies or substantial portions of the Software.
|
70
|
+
|
71
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
72
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
73
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
74
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
75
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
76
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
77
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
require 'echoe'
|
4
|
+
|
5
|
+
Echoe.new('transmogrify', '1.0.0') do |p|
|
6
|
+
p.author = ['Ryan Davis', 'Rein Henrichs']
|
7
|
+
p.email = ['ryand-ruby@zenspider.com', 'reinh@reinh.com']
|
8
|
+
p.summary = "Unfactoring your code, for evil."
|
9
|
+
p.runtime_dependencies = ['ruby2ruby', 'sexp_processor >= 3.0.0', 'ruby_parser >= 2.0.1']
|
10
|
+
p.bin_files = "bin/transmogrify"
|
11
|
+
end
|
data/bin/transmogrify
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
module Transmogrifiers
|
2
|
+
module Piglatin
|
3
|
+
def transmogrify(name)
|
4
|
+
name = super.to_s
|
5
|
+
append_string = ''
|
6
|
+
|
7
|
+
if match = name.match(/\d+$/)
|
8
|
+
name, append_string = match.pre_match, match[0]
|
9
|
+
end
|
10
|
+
|
11
|
+
if match = name.match(/^[^aeiou]+/i)
|
12
|
+
name = match.post_match + match[0]
|
13
|
+
else
|
14
|
+
name << 'w'
|
15
|
+
end
|
16
|
+
|
17
|
+
name.downcase!.capitalize! if name.match(/[A-Z]/)
|
18
|
+
|
19
|
+
:"#{name}ay#{append_string}"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
data/lib/transmogrify.rb
ADDED
@@ -0,0 +1,103 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'ruby2ruby'
|
3
|
+
require 'sexp_processor'
|
4
|
+
require 'ruby_parser'
|
5
|
+
require 'transmogrifiers/douchy_numbers'
|
6
|
+
require 'transmogrifiers/piglatin'
|
7
|
+
require 'transmogrifiers/rot13'
|
8
|
+
|
9
|
+
class Transmogrify < SexpProcessor
|
10
|
+
include Transmogrifiers
|
11
|
+
VERSION = '1.0.0'
|
12
|
+
|
13
|
+
def initialize(*transmogrifiers)
|
14
|
+
transmogrifiers.each {|transmogrifier| extend transmogrifier}
|
15
|
+
super()
|
16
|
+
|
17
|
+
@r2r = Ruby2Ruby.new
|
18
|
+
@ivars = {}
|
19
|
+
@lvars = {}
|
20
|
+
end
|
21
|
+
|
22
|
+
def new_ivar(name)
|
23
|
+
@ivars[name] = :"@#{transmogrify(name)}" # TODO: LAME
|
24
|
+
end
|
25
|
+
|
26
|
+
def new_lvar(name)
|
27
|
+
@lvars[name] = transmogrify(name)
|
28
|
+
end
|
29
|
+
|
30
|
+
def rewrite_args exp
|
31
|
+
name = exp[1]
|
32
|
+
exp[1] = new_lvar(name)
|
33
|
+
exp
|
34
|
+
end
|
35
|
+
|
36
|
+
def rewrite_false exp
|
37
|
+
s(:not, s(:not, s(:not, s(:lit, 33))))
|
38
|
+
end
|
39
|
+
|
40
|
+
def rewrite_iasgn exp
|
41
|
+
name = exp[1]
|
42
|
+
exp[1] = @ivars[name] || new_ivar(name)
|
43
|
+
exp
|
44
|
+
end
|
45
|
+
|
46
|
+
def rewrite_lasgn exp
|
47
|
+
name = exp[1]
|
48
|
+
exp[1] = @lvars[name] || new_lvar(name)
|
49
|
+
exp
|
50
|
+
end
|
51
|
+
|
52
|
+
def rewrite_lvar exp
|
53
|
+
name = exp[1]
|
54
|
+
exp[1] = @lvars[name] || new_ivar(name)
|
55
|
+
exp
|
56
|
+
end
|
57
|
+
|
58
|
+
def rewrite_ivar exp
|
59
|
+
name = exp[1]
|
60
|
+
exp[1] = @ivars[name] || new_ivar(name)
|
61
|
+
exp
|
62
|
+
end
|
63
|
+
|
64
|
+
def rewrite_true exp
|
65
|
+
s(:not, s(:not, s(:lit, 33)))
|
66
|
+
end
|
67
|
+
|
68
|
+
def run files_and_dirs
|
69
|
+
files_and_dirs.each do |file_or_dir|
|
70
|
+
if File.file? file_or_dir then
|
71
|
+
transmogrify_file file_or_dir
|
72
|
+
elsif File.directory? file_or_dir then
|
73
|
+
Dir[File.join(file_or_dir, "**/*.rb")].each do |file|
|
74
|
+
transmogrify_file file
|
75
|
+
end
|
76
|
+
else
|
77
|
+
# silently skipping for now
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
# TODO: I think this is way too generic a name
|
83
|
+
def transmogrify(name)
|
84
|
+
name
|
85
|
+
end
|
86
|
+
|
87
|
+
def transmogrify_file path
|
88
|
+
ruby = transmogrify_string File.read(path)
|
89
|
+
new_path, old_path = "#{path}.new", "#{path}.old"
|
90
|
+
File.open("#{path}.new", 'w') do |f|
|
91
|
+
f.puts ruby
|
92
|
+
end
|
93
|
+
File.rename path, old_path
|
94
|
+
File.rename new_path, path
|
95
|
+
end
|
96
|
+
|
97
|
+
def transmogrify_string ruby
|
98
|
+
rp = RubyParser.new
|
99
|
+
sexp = rp.process ruby
|
100
|
+
sexp = self.process sexp
|
101
|
+
@r2r.process(sexp)
|
102
|
+
end
|
103
|
+
end
|
@@ -0,0 +1,125 @@
|
|
1
|
+
|
2
|
+
require 'test/unit'
|
3
|
+
require 'transmogrify'
|
4
|
+
|
5
|
+
class TestTransmogrify < Test::Unit::TestCase
|
6
|
+
include Transmogrifiers
|
7
|
+
|
8
|
+
def setup
|
9
|
+
# number = 1
|
10
|
+
# string = 'string'
|
11
|
+
# puts number
|
12
|
+
# puts string
|
13
|
+
|
14
|
+
@lvar_sexp = s(:block,
|
15
|
+
s(:lasgn, :number, s(:lit, 1)),
|
16
|
+
s(:lasgn, :string, s(:str, "string")),
|
17
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :number))),
|
18
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :string))))
|
19
|
+
|
20
|
+
# def x arg
|
21
|
+
# y = 42
|
22
|
+
# y + arg
|
23
|
+
# end
|
24
|
+
|
25
|
+
@defn_sexp = s(:defn, :x, s(:args, :arg),
|
26
|
+
s(:scope,
|
27
|
+
s(:block,
|
28
|
+
s(:lasgn, :y, s(:lit, 42)),
|
29
|
+
s(:call, s(:lvar, :y), :+,
|
30
|
+
s(:arglist, s(:lvar, :arg))))))
|
31
|
+
|
32
|
+
# @number = 1
|
33
|
+
# @string = 'string'
|
34
|
+
# puts @number
|
35
|
+
# puts @string
|
36
|
+
|
37
|
+
@iasgn_sexp = s(:block,
|
38
|
+
s(:iasgn, :@number, s(:lit, 1)),
|
39
|
+
s(:iasgn, :@string, s(:str, "string")),
|
40
|
+
s(:call, nil, :puts, s(:arglist, s(:ivar, :@number))),
|
41
|
+
s(:call, nil, :puts, s(:arglist, s(:ivar, :@string))))
|
42
|
+
|
43
|
+
# true
|
44
|
+
# false
|
45
|
+
|
46
|
+
@true_false_sexp = s(:block,
|
47
|
+
s(:true),
|
48
|
+
s(:false))
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_rewrite_lvar_with_douchy_numbers
|
52
|
+
expected = s(:block,
|
53
|
+
s(:lasgn, :douche01, s(:lit, 1)),
|
54
|
+
s(:lasgn, :douche02, s(:str, "string")),
|
55
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :douche01))),
|
56
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :douche02))))
|
57
|
+
|
58
|
+
trans = Transmogrify.new(DouchyNumbers)
|
59
|
+
actual = trans.process @lvar_sexp
|
60
|
+
|
61
|
+
assert_equal expected, actual
|
62
|
+
end
|
63
|
+
|
64
|
+
def test_rewrite_lvar_with_douchy_numbers_and_piglatin
|
65
|
+
expected = s(:block,
|
66
|
+
s(:lasgn, :oucheday01, s(:lit, 1)),
|
67
|
+
s(:lasgn, :oucheday02, s(:str, "string")),
|
68
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :oucheday01))),
|
69
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :oucheday02))))
|
70
|
+
|
71
|
+
trans = Transmogrify.new(DouchyNumbers, Piglatin)
|
72
|
+
actual = trans.process @lvar_sexp
|
73
|
+
|
74
|
+
assert_equal expected, actual
|
75
|
+
end
|
76
|
+
|
77
|
+
def test_rewrite_lvar_defn_args
|
78
|
+
expected = s(:defn, :x, s(:args, :douche01),
|
79
|
+
s(:scope,
|
80
|
+
s(:block,
|
81
|
+
s(:lasgn, :douche02, s(:lit, 42)),
|
82
|
+
s(:call, s(:lvar, :douche02), :+,
|
83
|
+
s(:arglist, s(:lvar, :douche01))))))
|
84
|
+
|
85
|
+
trans = Transmogrify.new(DouchyNumbers)
|
86
|
+
actual = trans.process @defn_sexp
|
87
|
+
|
88
|
+
assert_equal expected, actual
|
89
|
+
end
|
90
|
+
|
91
|
+
def test_rewrite_ivar_with_douchy_numbers
|
92
|
+
expected = s(:block,
|
93
|
+
s(:iasgn, :@douche01, s(:lit, 1)),
|
94
|
+
s(:iasgn, :@douche02, s(:str, "string")),
|
95
|
+
s(:call, nil, :puts, s(:arglist, s(:ivar, :@douche01))),
|
96
|
+
s(:call, nil, :puts, s(:arglist, s(:ivar, :@douche02))))
|
97
|
+
trans = Transmogrify.new(DouchyNumbers)
|
98
|
+
actual = trans.process @iasgn_sexp
|
99
|
+
|
100
|
+
assert_equal expected, actual
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_rewrite_true_false
|
104
|
+
expected = s(:block,
|
105
|
+
s(:not, s(:not, s(:lit, 33))),
|
106
|
+
s(:not, s(:not, s(:not, s(:lit, 33)))))
|
107
|
+
trans = Transmogrify.new(DouchyNumbers)
|
108
|
+
actual = trans.process @true_false_sexp
|
109
|
+
|
110
|
+
assert_equal expected, actual
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_rewrite_lvar_with_piglatin
|
114
|
+
expected = s(:block,
|
115
|
+
s(:lasgn, :umbernay, s(:lit, 1)),
|
116
|
+
s(:lasgn, :ingstray, s(:str, "string")),
|
117
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :umbernay))),
|
118
|
+
s(:call, nil, :puts, s(:arglist, s(:lvar, :ingstray))))
|
119
|
+
|
120
|
+
trans = Transmogrify.new(Piglatin)
|
121
|
+
actual = trans.process @lvar_sexp
|
122
|
+
|
123
|
+
assert_equal expected, actual
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'transmogrify'
|
3
|
+
|
4
|
+
class TestPiglatin < Test::Unit::TestCase
|
5
|
+
def transmogrifier
|
6
|
+
Transmogrify.new(Transmogrifiers::Piglatin)
|
7
|
+
end
|
8
|
+
private :transmogrifier
|
9
|
+
|
10
|
+
def assert_piglatin_equal(args = {})
|
11
|
+
args.each do |before, after|
|
12
|
+
assert_equal after, transmogrifier.transmogrify(before)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
private :assert_piglatin_equal
|
16
|
+
|
17
|
+
def test_piglatin_conversions
|
18
|
+
assert_piglatin_equal({
|
19
|
+
:asshole => :assholeway,
|
20
|
+
:douche => :oucheday,
|
21
|
+
:stripper => :ipperstray,
|
22
|
+
:Asshole => :Assholeway,
|
23
|
+
:Douche => :Oucheday,
|
24
|
+
:Stripper => :Ipperstray,
|
25
|
+
:foo01 => :oofay01,
|
26
|
+
})
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'transmogrify'
|
3
|
+
|
4
|
+
class TestRot13 < Test::Unit::TestCase
|
5
|
+
include Transmogrifiers::Rot13
|
6
|
+
|
7
|
+
def test_convert_word_with_leading_vowel
|
8
|
+
actual = :asshole
|
9
|
+
expected = :nffubyr
|
10
|
+
|
11
|
+
assert_equal expected, transmogrify(actual)
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_convert_word_with_leading_consonant
|
15
|
+
actual = :douche
|
16
|
+
expected = :qbhpur
|
17
|
+
|
18
|
+
assert_equal expected, transmogrify(actual)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_convert_word_with_multiple_leading_consonants
|
22
|
+
actual = :stripper
|
23
|
+
expected = :fgevccre
|
24
|
+
|
25
|
+
assert_equal expected, transmogrify(actual)
|
26
|
+
end
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = %q{transmogrify}
|
5
|
+
s.version = "1.0.0"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Ryan Davis, Rein Henrichs"]
|
9
|
+
s.date = %q{2008-12-14}
|
10
|
+
s.default_executable = %q{transmogrify}
|
11
|
+
s.description = %q{Unfactoring your code, for evil.}
|
12
|
+
s.email = ["ryand-ruby@zenspider.com", "reinh@reinh.com"]
|
13
|
+
s.executables = ["transmogrify"]
|
14
|
+
s.extra_rdoc_files = ["bin/transmogrify", "lib/transmogrifiers/douchy_numbers.rb", "lib/transmogrifiers/piglatin.rb", "lib/transmogrifiers/rot13.rb", "lib/transmogrify.rb", "README.txt"]
|
15
|
+
s.files = ["bin/transmogrify", "History.txt", "lib/transmogrifiers/douchy_numbers.rb", "lib/transmogrifiers/piglatin.rb", "lib/transmogrifiers/rot13.rb", "lib/transmogrify.rb", "Manifest", "Rakefile", "README.txt", "test/test_transmogrify.rb", "test/transmigrifiers/test_piglatin.rb", "test/transmigrifiers/test_rot13.rb", "transmogrify.gemspec"]
|
16
|
+
s.has_rdoc = true
|
17
|
+
s.homepage = %q{}
|
18
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Transmogrify", "--main", "README.txt"]
|
19
|
+
s.require_paths = ["lib"]
|
20
|
+
s.rubyforge_project = %q{transmogrify}
|
21
|
+
s.rubygems_version = %q{1.3.1}
|
22
|
+
s.summary = %q{Unfactoring your code, for evil.}
|
23
|
+
s.test_files = ["test/test_transmogrify.rb", "test/transmigrifiers/test_piglatin.rb", "test/transmigrifiers/test_rot13.rb"]
|
24
|
+
|
25
|
+
if s.respond_to? :specification_version then
|
26
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
27
|
+
s.specification_version = 2
|
28
|
+
|
29
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
30
|
+
s.add_runtime_dependency(%q<ruby2ruby>, [">= 0"])
|
31
|
+
s.add_runtime_dependency(%q<sexp_processor>, [">= 0", "= 3.0.0"])
|
32
|
+
s.add_runtime_dependency(%q<ruby_parser>, [">= 0", "= 2.0.1"])
|
33
|
+
s.add_development_dependency(%q<echoe>, [">= 0"])
|
34
|
+
else
|
35
|
+
s.add_dependency(%q<ruby2ruby>, [">= 0"])
|
36
|
+
s.add_dependency(%q<sexp_processor>, [">= 0", "= 3.0.0"])
|
37
|
+
s.add_dependency(%q<ruby_parser>, [">= 0", "= 2.0.1"])
|
38
|
+
s.add_dependency(%q<echoe>, [">= 0"])
|
39
|
+
end
|
40
|
+
else
|
41
|
+
s.add_dependency(%q<ruby2ruby>, [">= 0"])
|
42
|
+
s.add_dependency(%q<sexp_processor>, [">= 0", "= 3.0.0"])
|
43
|
+
s.add_dependency(%q<ruby_parser>, [">= 0", "= 2.0.1"])
|
44
|
+
s.add_dependency(%q<echoe>, [">= 0"])
|
45
|
+
end
|
46
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: joshua-transmogrify
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Ryan Davis, Rein Henrichs
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2008-12-14 00:00:00 -08:00
|
13
|
+
default_executable: transmogrify
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: ruby2ruby
|
17
|
+
version_requirement:
|
18
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
|
+
requirements:
|
20
|
+
- - ">="
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: "0"
|
23
|
+
version:
|
24
|
+
- !ruby/object:Gem::Dependency
|
25
|
+
name: sexp_processor
|
26
|
+
version_requirement:
|
27
|
+
version_requirements: !ruby/object:Gem::Requirement
|
28
|
+
requirements:
|
29
|
+
- - ">="
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "0"
|
32
|
+
- - "="
|
33
|
+
- !ruby/object:Gem::Version
|
34
|
+
version: 3.0.0
|
35
|
+
version:
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: ruby_parser
|
38
|
+
version_requirement:
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
requirements:
|
41
|
+
- - ">="
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: "0"
|
44
|
+
- - "="
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: 2.0.1
|
47
|
+
version:
|
48
|
+
- !ruby/object:Gem::Dependency
|
49
|
+
name: echoe
|
50
|
+
version_requirement:
|
51
|
+
version_requirements: !ruby/object:Gem::Requirement
|
52
|
+
requirements:
|
53
|
+
- - ">="
|
54
|
+
- !ruby/object:Gem::Version
|
55
|
+
version: "0"
|
56
|
+
version:
|
57
|
+
description: Unfactoring your code, for evil.
|
58
|
+
email:
|
59
|
+
- ryand-ruby@zenspider.com
|
60
|
+
- reinh@reinh.com
|
61
|
+
executables:
|
62
|
+
- transmogrify
|
63
|
+
extensions: []
|
64
|
+
|
65
|
+
extra_rdoc_files:
|
66
|
+
- bin/transmogrify
|
67
|
+
- lib/transmogrifiers/douchy_numbers.rb
|
68
|
+
- lib/transmogrifiers/piglatin.rb
|
69
|
+
- lib/transmogrifiers/rot13.rb
|
70
|
+
- lib/transmogrify.rb
|
71
|
+
- README.txt
|
72
|
+
files:
|
73
|
+
- bin/transmogrify
|
74
|
+
- History.txt
|
75
|
+
- lib/transmogrifiers/douchy_numbers.rb
|
76
|
+
- lib/transmogrifiers/piglatin.rb
|
77
|
+
- lib/transmogrifiers/rot13.rb
|
78
|
+
- lib/transmogrify.rb
|
79
|
+
- Manifest
|
80
|
+
- Rakefile
|
81
|
+
- README.txt
|
82
|
+
- test/test_transmogrify.rb
|
83
|
+
- test/transmigrifiers/test_piglatin.rb
|
84
|
+
- test/transmigrifiers/test_rot13.rb
|
85
|
+
- transmogrify.gemspec
|
86
|
+
has_rdoc: true
|
87
|
+
homepage: ""
|
88
|
+
post_install_message:
|
89
|
+
rdoc_options:
|
90
|
+
- --line-numbers
|
91
|
+
- --inline-source
|
92
|
+
- --title
|
93
|
+
- Transmogrify
|
94
|
+
- --main
|
95
|
+
- README.txt
|
96
|
+
require_paths:
|
97
|
+
- lib
|
98
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: "0"
|
103
|
+
version:
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
105
|
+
requirements:
|
106
|
+
- - ">="
|
107
|
+
- !ruby/object:Gem::Version
|
108
|
+
version: "1.2"
|
109
|
+
version:
|
110
|
+
requirements: []
|
111
|
+
|
112
|
+
rubyforge_project: transmogrify
|
113
|
+
rubygems_version: 1.2.0
|
114
|
+
signing_key:
|
115
|
+
specification_version: 2
|
116
|
+
summary: Unfactoring your code, for evil.
|
117
|
+
test_files:
|
118
|
+
- test/test_transmogrify.rb
|
119
|
+
- test/transmigrifiers/test_piglatin.rb
|
120
|
+
- test/transmigrifiers/test_rot13.rb
|