vermic 0.1.3

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.
@@ -0,0 +1,4 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in vermic.gemspec
4
+ gemspec
@@ -0,0 +1,30 @@
1
+ Vermic
2
+ ======
3
+
4
+ Command line utility for publishing your code on pastebin.com
5
+ Current version - 0.1.2
6
+
7
+ I often ask questions on irc and forums. So, I had to paste my code into public accessible places such as pastebin.com. This process was pretty much boring - you go to the text editor, you copy everything, you go to the website, you paste it.
8
+ I've decided to create a little utility to make this process easier.
9
+ Now it copies the url of the paste to the system clipboard using the clipboard gem.
10
+
11
+ As soon as this is my first gem please let me know if you notice some ugly code or architecture.
12
+
13
+ TODO:
14
+
15
+ 1. + Handle missing mandatory arguments
16
+ 2. + Copy URL to the system clipboard(tested for linux only)
17
+ 3. Add file extension recognizer
18
+
19
+ Why?
20
+ ----
21
+
22
+ This gem is quite useless because it cannot be used by many people since there's a restriction for pastes from one developer API a day. However, even from this simple project I've learned a lot of things and this is the first gem I've ever created, yupi.
23
+ I feel that there're tons of design and other trivial errors here so if you can admit any mistakes here please let me know.
24
+
25
+ Why vermic?
26
+ -----------
27
+
28
+ Well, we all know about spaghetti code. Let me give you my association row:
29
+
30
+ pastebin.com -> a lot of code -> huh, a lot of spaghetti code -> Italian cuisine -> vermicelli??? -> vermic
@@ -0,0 +1,8 @@
1
+ require "bundler/gem_tasks"
2
+
3
+ require 'rake/testtask'
4
+
5
+ Rake::TestTask.new do |t|
6
+ t.libs << "lib"
7
+ t.pattern = "spec/*_spec.rb"
8
+ end
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require_relative '../lib/vermic'
@@ -0,0 +1,63 @@
1
+ require 'optparse'
2
+ require 'clipboard'
3
+ require_relative "vermic/version"
4
+ require_relative "vermic/pastebin"
5
+ require_relative "vermic/validator"
6
+
7
+ # This module parses command line options
8
+ # for vermic command line utility.
9
+ #
10
+ module Vermic
11
+ options = Hash.new
12
+
13
+ parser = OptionParser.new do |opts|
14
+ opts.banner = "This is command line utility which pastes your code on pastebin"
15
+
16
+ opts.on("-v", "--version", "shows the current version") do |v|
17
+ puts Vermic::VERSION
18
+ exit
19
+ end
20
+
21
+ opts.on("-n", "--name N", "sets the name of the paste") do |n|
22
+ options[:paste_name] = name
23
+ end
24
+
25
+ opts.on("-f", "--format F", "sets the format of the paste") do |format|
26
+ options[:paste_format] = format
27
+ end
28
+
29
+ opts.on("-p", "--private", "makes the paste private(public is default)") do |private|
30
+ options[:paste_private] = 1
31
+ end
32
+
33
+ opts.on("-e", "--expire E", "sets the expire date of the paste") do |expire_date|
34
+ options[:paste_expire_date] = expire_date
35
+ end
36
+
37
+ end
38
+
39
+ begin parser.parse!
40
+ rescue OptionParser::InvalidOption
41
+ puts "Invalid option, see --help for list of options"
42
+ exit
43
+
44
+ rescue OptionParser::MissingArgument => e
45
+ puts e
46
+ exit
47
+ end
48
+
49
+ options[:file_name] = ARGV[0]
50
+
51
+ Validator::validate_options(options)
52
+
53
+ if Validator::any_errors?
54
+ Validator::print_errors
55
+ else
56
+ result = PastebinWrapper::paste_file(options)
57
+ puts result
58
+ if result =~ /^https?:\/\//
59
+ Clipboard::copy(result)
60
+ puts "This URL has been copied to your clipboard"
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,70 @@
1
+ require 'net/http'
2
+ require 'uri'
3
+
4
+ # This module works with pastebin.com API.
5
+ #
6
+ module PastebinWrapper
7
+ POST_URL = "http://pastebin.com/api/api_post.php"
8
+ API_DEV_KEY = "7fe7c0c1814042eb9f0288d93d954fe9"
9
+
10
+ API_OPTION = 'paste'
11
+ PASTE_NAME = 'Vermicelli code'
12
+ PASTE_FORMAT = 'c'
13
+ PASTE_PRIVATE = 0
14
+ PASTE_EXPIRE_DATE = '1H'
15
+
16
+ # Pastes plain code to the pastebin.com with
17
+ # the given parameters
18
+ #
19
+ def self.paste_code(code, params = {})
20
+ initialize_parameters(code)
21
+ @@params.merge(params)
22
+ paste
23
+ end
24
+
25
+ # Pastes file to the pastebin.com site with the
26
+ # given parameters
27
+ #
28
+ def self.paste_file(params = {})
29
+ code = ""
30
+ filename = params[:file_name]
31
+ File.foreach(filename) do |line|
32
+ code += line
33
+ end
34
+ initialize_parameters(code)
35
+ @@params.merge!(params)
36
+ paste
37
+ end
38
+
39
+ # Private helper methods for the Pastebin module
40
+ private
41
+
42
+ # Pastes the code to the pastebin.com site
43
+ # with the given parameters and returns either
44
+ # the link to the pasted code in case of a
45
+ # successful paste or error message which starts
46
+ # by "Bad API request..."
47
+ #
48
+ def self.paste
49
+ Net::HTTP.post_form(URI.parse(POST_URL),
50
+ {'api_dev_key' => API_DEV_KEY,
51
+ 'api_option' => API_OPTION,
52
+ 'api_paste_code' => @@params[:paste_code],
53
+ 'api_paste_name' => @@params[:paste_name],
54
+ 'api_paste_format' => @@params[:paste_format],
55
+ 'api_paste_private' => @@params[:paste_private],
56
+ 'api_paste_expire_date' => @@params[:paste_expire_date]}).body
57
+ end
58
+
59
+ # Initializes paste parameters with the default
60
+ # values except for the paste code which is
61
+ # passed as a method parameter
62
+ #
63
+ def self.initialize_parameters(code)
64
+ @@params = {paste_name: PASTE_NAME,
65
+ paste_format: PASTE_FORMAT,
66
+ paste_private: PASTE_PRIVATE,
67
+ paste_expire_date: PASTE_EXPIRE_DATE,
68
+ paste_code: code}
69
+ end
70
+ end
@@ -0,0 +1,285 @@
1
+ # This module validates the parameters' values
2
+ # for the correctness
3
+ #
4
+ module Validator
5
+
6
+ # Hash of possible code formats
7
+ FORMATS_HASH = {
8
+ "4cs" => "4CS",
9
+ "6502acme" => "6502 ACME Cross Assembler",
10
+ "6502kickass" => "6502 Kick Assembler",
11
+ "6502tasm" => "6502 TASM/64TASS",
12
+ "abap" => "ABAP",
13
+ "actionscript" => "ActionScript",
14
+ "actionscript3" => "ActionScript 3",
15
+ "ada" => "Ada",
16
+ "algol68" => "ALGOL 68",
17
+ "apache" => "Apache Log",
18
+ "applescript" => "AppleScript",
19
+ "apt_sources" => "APT Sources",
20
+ "asm" => "ASM (NASM)",
21
+ "asp" => "ASP",
22
+ "autoconf" => "autoconf",
23
+ "autohotkey" => "Autohotkey",
24
+ "autoit" => "AutoIt",
25
+ "avisynth" => "Avisynth",
26
+ "awk" => "Awk",
27
+ "bascomavr" => "BASCOM AVR",
28
+ "bash" => "Bash",
29
+ "basic4gl" => "Basic4GL",
30
+ "bibtex" => "BibTeX",
31
+ "blitzbasic" => "Blitz Basic",
32
+ "bnf" => "BNF",
33
+ "boo" => "BOO",
34
+ "bf" => "BrainFuck",
35
+ "c" => "C",
36
+ "c_mac" => "C for Macs",
37
+ "cil" => "C Intermediate Language",
38
+ "csharp" => "C#",
39
+ "cpp" => "C++",
40
+ "cpp-qt" => "C++ (with QT extensions)",
41
+ "c_loadrunner" => "C: Loadrunner",
42
+ "caddcl" => "CAD DCL",
43
+ "cadlisp" => "CAD Lisp",
44
+ "cfdg" => "CFDG",
45
+ "chaiscript" => "ChaiScript",
46
+ "clojure" => "Clojure",
47
+ "klonec" => "Clone C",
48
+ "klonecpp" => "Clone C++",
49
+ "cmake" => "CMake",
50
+ "cobol" => "COBOL",
51
+ "coffeescript" => "CoffeeScript",
52
+ "cfm" => "ColdFusion",
53
+ "css" => "CSS",
54
+ "cuesheet" => "Cuesheet",
55
+ "d" => "D",
56
+ "dcs" => "DCS",
57
+ "delphi" => "Delphi",
58
+ "oxygene" => "Delphi Prism (Oxygene)",
59
+ "diff" => "Diff",
60
+ "div" => "DIV",
61
+ "dos" => "DOS",
62
+ "dot" => "DOT",
63
+ "e" => "E",
64
+ "ecmascript" => "ECMAScript",
65
+ "eiffel" => "Eiffel",
66
+ "email" => "Email",
67
+ "epc" => "EPC",
68
+ "erlang" => "Erlang",
69
+ "fsharp" => "F#",
70
+ "falcon" => "Falcon",
71
+ "fo" => "FO Language",
72
+ "f1" => "Formula One",
73
+ "fortran" => "Fortran",
74
+ "freebasic" => "FreeBasic",
75
+ "freeswitch" => "FreeSWITCH",
76
+ "gambas" => "GAMBAS",
77
+ "gml" => "Game Maker",
78
+ "gdb" => "GDB",
79
+ "genero" => "Genero",
80
+ "genie" => "Genie",
81
+ "gettext" => "GetText",
82
+ "go" => "Go",
83
+ "groovy" => "Groovy",
84
+ "gwbasic" => "GwBasic",
85
+ "haskell" => "Haskell",
86
+ "hicest" => "HicEst",
87
+ "hq9plus" => "HQ9 Plus",
88
+ "html4strict" => "HTML",
89
+ "html5" => "HTML 5",
90
+ "icon" => "Icon",
91
+ "idl" => "IDL",
92
+ "ini" => "INI file",
93
+ "inno" => "Inno Script",
94
+ "intercal" => "INTERCAL",
95
+ "io" => "IO",
96
+ "j" => "J",
97
+ "java" => "Java",
98
+ "java5" => "Java 5",
99
+ "javascript" => "JavaScript",
100
+ "jquery" => "jQuery",
101
+ "kixtart" => "KiXtart",
102
+ "latex" => "Latex",
103
+ "lb" => "Liberty BASIC",
104
+ "lsl2" => "Linden Scripting",
105
+ "lisp" => "Lisp",
106
+ "llvm" => "LLVM",
107
+ "locobasic" => "Loco Basic",
108
+ "logtalk" => "Logtalk",
109
+ "lolcode" => "LOL Code",
110
+ "lotusformulas" => "Lotus Formulas",
111
+ "lotusscript" => "Lotus Script",
112
+ "lscript" => "LScript",
113
+ "lua" => "Lua",
114
+ "m68k" => "M68000 Assembler",
115
+ "magiksf" => "MagikSF",
116
+ "make" => "Make",
117
+ "mapbasic" => "MapBasic",
118
+ "matlab" => "MatLab",
119
+ "mirc" => "mIRC",
120
+ "mmix" => "MIX Assembler",
121
+ "modula2" => "Modula 2",
122
+ "modula3" => "Modula 3",
123
+ "68000devpac" => "Motorola 68000 HiSoft Dev",
124
+ "mpasm" => "MPASM",
125
+ "mxml" => "MXML",
126
+ "mysql" => "MySQL",
127
+ "newlisp" => "newLISP",
128
+ "text" => "None",
129
+ "nsis" => "NullSoft Installer",
130
+ "oberon2" => "Oberon 2",
131
+ "objeck" => "Objeck Programming Langua",
132
+ "objc" => "Objective C",
133
+ "ocaml-brief" => "OCalm Brief",
134
+ "ocaml" => "OCaml",
135
+ "pf" => "OpenBSD PACKET FILTER",
136
+ "glsl" => "OpenGL Shading",
137
+ "oobas" => "Openoffice BASIC",
138
+ "oracle11" => "Oracle 11",
139
+ "oracle8" => "Oracle 8",
140
+ "oz" => "Oz",
141
+ "pascal" => "Pascal",
142
+ "pawn" => "PAWN",
143
+ "pcre" => "PCRE",
144
+ "per" => "Per",
145
+ "perl" => "Perl",
146
+ "perl6" => "Perl 6",
147
+ "php" => "PHP",
148
+ "php-brief" => "PHP Brief",
149
+ "pic16" => "Pic 16",
150
+ "pike" => "Pike",
151
+ "pixelbender" => "Pixel Bender",
152
+ "plsql" => "PL/SQL",
153
+ "postgresql" => "PostgreSQL",
154
+ "povray" => "POV-Ray",
155
+ "powershell" => "Power Shell",
156
+ "powerbuilder" => "PowerBuilder",
157
+ "proftpd" => "ProFTPd",
158
+ "progress" => "Progress",
159
+ "prolog" => "Prolog",
160
+ "properties" => "Properties",
161
+ "providex" => "ProvideX",
162
+ "purebasic" => "PureBasic",
163
+ "pycon" => "PyCon",
164
+ "python" => "Python",
165
+ "q" => "q/kdb+",
166
+ "qbasic" => "QBasic",
167
+ "rsplus" => "R",
168
+ "rails" => "Rails",
169
+ "rebol" => "REBOL",
170
+ "reg" => "REG",
171
+ "robots" => "Robots",
172
+ "rpmspec" => "RPM Spec",
173
+ "ruby" => "Ruby",
174
+ "gnuplot" => "Ruby Gnuplot",
175
+ "sas" => "SAS",
176
+ "scala" => "Scala",
177
+ "scheme" => "Scheme",
178
+ "scilab" => "Scilab",
179
+ "sdlbasic" => "SdlBasic",
180
+ "smalltalk" => "Smalltalk",
181
+ "smarty" => "Smarty",
182
+ "sql" => "SQL",
183
+ "systemverilog" => "SystemVerilog",
184
+ "tsql" => "T-SQL",
185
+ "tcl" => "TCL",
186
+ "teraterm" => "Tera Term",
187
+ "thinbasic" => "thinBasic",
188
+ "typoscript" => "TypoScript",
189
+ "unicon" => "Unicon",
190
+ "uscript" => "UnrealScript",
191
+ "vala" => "Vala",
192
+ "vbnet" => "VB.NET",
193
+ "verilog" => "VeriLog",
194
+ "vhdl" => "VHDL",
195
+ "vim" => "VIM",
196
+ "visualprolog" => "Visual Pro Log",
197
+ "vb" => "VisualBasic",
198
+ "visualfoxpro" => "VisualFoxPro",
199
+ "whitespace" => "WhiteSpace",
200
+ "whois" => "WHOIS",
201
+ "winbatch" => "Winbatch",
202
+ "xbasic" => "XBasic",
203
+ "xml" => "XML",
204
+ "xorg_conf" => "Xorg Config",
205
+ "xpp" => "XPP",
206
+ "yaml" => "YAML",
207
+ "z80" => "Z80 Assembler",
208
+ "zxbasic" => "ZXBasic"
209
+ }
210
+
211
+ # Hash of possible expire date values
212
+ EXPIRE_DATE_HASH = {
213
+ "N" => "Never",
214
+ "10M" => "10 Minutes",
215
+ "1H" => "1 Hour",
216
+ "1D" => "1 Day",
217
+ "1M" => "1 Month"
218
+ }
219
+
220
+ # Validates all the options which exist in the
221
+ # options array(defined by the user)
222
+ #
223
+ def self.validate_options(options = {})
224
+ @errors = []
225
+ validate_name(options[:paste_name]) if options.has_key?(:paste_name)
226
+ validate_format(options[:paste_format]) if options.has_key?(:paste_format)
227
+ validate_expire_date(options[:paste_expire_date]) if options.has_key?(:paste_expire_date)
228
+ validate_file(options[:file_name])
229
+ end
230
+
231
+ # Checks if the options have any errors
232
+ #
233
+ def self.any_errors?
234
+ !@errors.empty?
235
+ end
236
+
237
+ # Prints all the errors of all options
238
+ # to the shell
239
+ #
240
+ def self.print_errors
241
+ @errors.each do |e|
242
+ puts e
243
+ end
244
+ end
245
+
246
+ private
247
+
248
+ # Validates the name of the paste
249
+ #
250
+ def self.validate_name(name)
251
+ @errors << "Name can't be empty" if name.empty?
252
+ end
253
+
254
+ # Validates the format of the paste
255
+ #
256
+ def self.validate_format(format)
257
+ if !FORMATS_HASH.has_key?(format)
258
+ @errors << "Wrong format"
259
+ FORMATS_HASH.keys.each do |key|
260
+ @errors << "\t#{key} -> #{FORMATS_HASH[key]}"
261
+ end
262
+ end
263
+ end
264
+
265
+ # Validates the expire date of the paste
266
+ #
267
+ def self.validate_expire_date(expire_date)
268
+ if !EXPIRE_DATE_HASH.has_key?(expire_date)
269
+ @errors << "Wrong format of expire date, you should use the following arguments:"
270
+ EXPIRE_DATE_HASH.keys.each do |key|
271
+ @errors << "\t#{key.to_s} -> #{EXPIRE_DATE_HASH[key]}"
272
+ end
273
+ end
274
+ end
275
+
276
+ # Validates the file
277
+ #
278
+ def self.validate_file(filename)
279
+ if filename.nil?
280
+ @errors << "But you didn't provide the file"
281
+ else
282
+ @errors << "There's no such file" if !File.exists?(filename)
283
+ end
284
+ end
285
+ end
@@ -0,0 +1,3 @@
1
+ module Vermic
2
+ VERSION = "0.1.3"
3
+ end
File without changes
@@ -0,0 +1,2 @@
1
+ some text here
2
+ this file is not empty
@@ -0,0 +1,23 @@
1
+ require 'minitest/autorun'
2
+
3
+ require_relative '../lib/vermic/pastebin'
4
+
5
+ # Tests PastebinWrapper module
6
+ #
7
+ describe PastebinWrapper do
8
+
9
+ it "shouldn't post empty code" do
10
+ # PastebinWrapper::paste_code('').must_match(/Bad API request.*/)
11
+ end
12
+
13
+ it "should return url when no params" do
14
+ # PastebinWrapper::paste_code('some code').must_match(/http:\/\/pastebin.com\/\w+/)
15
+ end
16
+
17
+ it "shouldn't paste empty file" do
18
+ options = {
19
+ file_name: File.expand_path('spec/files/empty_file')
20
+ }
21
+ # PastebinWrapper::paste_file(options).must_match(/Bad API request.*/)
22
+ end
23
+ end
@@ -0,0 +1,50 @@
1
+ require 'minitest/autorun'
2
+
3
+ require_relative '../lib/vermic/validator'
4
+
5
+ # Tests Validator
6
+ #
7
+ describe "Validator" do
8
+
9
+ it "should fail if empty name" do
10
+ options = {paste_name: "", paste_format: "c", paste_expire_date: "1M"}
11
+ Validator::validate_options(options)
12
+ Validator::any_errors?.must_equal(true)
13
+ end
14
+
15
+ it "should fail if empty format" do
16
+ options = {paste_name: "Some code", paste_format: "", paste_expire_date: "1H"}
17
+ Validator::validate_options(options)
18
+ Validator::any_errors?.must_equal(true)
19
+ end
20
+
21
+ it "should fail if empty expire date" do
22
+ options = {paste_name: "Some code", paste_format: "yaml", paste_expire_date: ""}
23
+ Validator::validate_options(options)
24
+ Validator::any_errors?.must_equal(true)
25
+ end
26
+
27
+ it "should fail if wrong format" do
28
+ options = {paste_name: "Some code", paste_format: "cee", paste_expire_date: "1D"}
29
+ Validator::validate_options(options)
30
+ Validator::any_errors?.must_equal(true)
31
+ options[:paste_name] = "z801"
32
+ Validator::validate_options(options)
33
+ Validator::any_errors?.must_equal(true)
34
+ end
35
+
36
+ it "should fail if wrong expire date" do
37
+ options = {paste_name: "Some code", paste_format: "vim", paste_expire_date: "10m"}
38
+ Validator::validate_options(options)
39
+ Validator::any_errors?.must_equal(true)
40
+ options[:paste_expire_date] = "n"
41
+ Validator::validate_options(options)
42
+ Validator::any_errors?.must_equal(true)
43
+ end
44
+
45
+ it "should fail if file is not given" do
46
+ options = {paste_name: "Some code", paste_format: "yaml", paste_expire_date: "10M", file_name: nil}
47
+ Validator::validate_options(options)
48
+ Validator::any_errors?.must_equal(true)
49
+ end
50
+ end
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "vermic/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "vermic"
7
+ s.version = Vermic::VERSION
8
+ s.authors = ["Sergey Kim"]
9
+ s.email = ["skim1776@gmail.com"]
10
+ s.homepage = "http://www.github.com/skim1776/vermic"
11
+ s.summary = %q{Pastes your code to the pastebin.com}
12
+ s.description = %q{I often need to paste my code to some place with public access in order to ask questions.
13
+ This utility makes this process easier.}
14
+
15
+ s.rubyforge_project = "vermic"
16
+
17
+ s.files = `git ls-files`.split("\n")
18
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
19
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
20
+ s.require_paths = ["lib"]
21
+
22
+ # specify any dependencies here; for example:
23
+ # s.add_development_dependency "rspec"
24
+ s.add_runtime_dependency "clipboard"
25
+ end
metadata ADDED
@@ -0,0 +1,76 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: vermic
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Sergey Kim
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-02-18 00:00:00.000000000Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: clipboard
16
+ requirement: &22159340 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *22159340
25
+ description: ! "I often need to paste my code to some place with public access in
26
+ order to ask questions.\n This utility makes this process easier."
27
+ email:
28
+ - skim1776@gmail.com
29
+ executables:
30
+ - vermic
31
+ extensions: []
32
+ extra_rdoc_files: []
33
+ files:
34
+ - .gitignore
35
+ - Gemfile
36
+ - README.md
37
+ - Rakefile
38
+ - bin/vermic
39
+ - lib/vermic.rb
40
+ - lib/vermic/pastebin.rb
41
+ - lib/vermic/validator.rb
42
+ - lib/vermic/version.rb
43
+ - spec/files/empty_file
44
+ - spec/files/file
45
+ - spec/pastebin_spec.rb
46
+ - spec/validator_spec.rb
47
+ - vermic.gemspec
48
+ homepage: http://www.github.com/skim1776/vermic
49
+ licenses: []
50
+ post_install_message:
51
+ rdoc_options: []
52
+ require_paths:
53
+ - lib
54
+ required_ruby_version: !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ! '>='
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ required_rubygems_version: !ruby/object:Gem::Requirement
61
+ none: false
62
+ requirements:
63
+ - - ! '>='
64
+ - !ruby/object:Gem::Version
65
+ version: '0'
66
+ requirements: []
67
+ rubyforge_project: vermic
68
+ rubygems_version: 1.8.10
69
+ signing_key:
70
+ specification_version: 3
71
+ summary: Pastes your code to the pastebin.com
72
+ test_files:
73
+ - spec/files/empty_file
74
+ - spec/files/file
75
+ - spec/pastebin_spec.rb
76
+ - spec/validator_spec.rb