rubytutor 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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 16311ce192b69336c7ab2c5fac0deb318d0bfc61
4
+ data.tar.gz: '002384cd7122ee0e1d7df1e5cf29b88dd0e7a442'
5
+ SHA512:
6
+ metadata.gz: 7228e5e6b0db3b937811d0dafbac60cd4266adc9e9f1528fd3278721bacb78da3fd99d7f3a1dcc6f75426118e44bf970c236b9d714e18b3c8df1a80b545f2790
7
+ data.tar.gz: 71de1d1972fe5dc7e0bba1334326db8efa9246469d43504e2a955ddee7d5bfc609b166ec8f977839d69126352951a122a52c445e50b4a769e3f47271ea4ac7b9
data/.gitignore ADDED
@@ -0,0 +1,9 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /Gemfile.lock
4
+ /_yardoc/
5
+ /coverage/
6
+ /doc/
7
+ /pkg/
8
+ /spec/reports/
9
+ /tmp/
data/.travis.yml ADDED
@@ -0,0 +1,5 @@
1
+ sudo: false
2
+ language: ruby
3
+ rvm:
4
+ - 2.3.3
5
+ before_install: gem install bundler -v 1.13.7
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in tutor.gemspec
4
+ gemspec
5
+ gem 'minitest'
6
+ gem 'minitest-reporters'
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2017 Sunny
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,188 @@
1
+ # RubyTutor
2
+
3
+ RubyTutor is an irb tool to help new developers and developers new to using Ruby on the fundamentals of the language.
4
+
5
+ ## Installation
6
+
7
+ ### IRB
8
+
9
+ In order to use it, simply install it:
10
+
11
+ $ gem install rubytutor
12
+
13
+ Then go into irb and require it:
14
+
15
+ $ irb
16
+ 2.3.3 :001 > require 'rubytutor'
17
+ => true
18
+
19
+ ### Other Uses
20
+
21
+ While RubyTutor is meant to be an irb tool, far be it from me to disallow others from finding other uses for it.
22
+
23
+ If you wish to add RubyTutor to a project, add this line to your application's Gemfile:
24
+
25
+ ```ruby
26
+ gem 'rubytutor'
27
+ ```
28
+
29
+ And then execute:
30
+
31
+ $ bundle install
32
+
33
+ Or install it yourself as:
34
+
35
+ $ gem install rubytutor
36
+
37
+ ## Usage
38
+
39
+ RubyTutor has 4 class methods that can be useful to developers:
40
+
41
+ * `RubyTutor.explain_full(object)`
42
+ * `RubyTutor.explain(object)`
43
+ * `RubyTutor.describe(object)`
44
+ * `RubyTutor.available_methods(object, filter)`
45
+
46
+ ### explain_full
47
+
48
+ `explain_full` outputs a list of attributes pertaining to the object passed in.
49
+
50
+ Here is a sample output:
51
+
52
+ ```ruby
53
+ RubyTutor.explain_full 'string'
54
+
55
+ # >> Instance of Class: String
56
+ # >> Value: string
57
+ # >> Length: 6
58
+ # >> Mutable? Yes
59
+ # >> Object ID: 70179170680460
60
+ # >> Inhertits From: Comparable, Object, Kernel, BasicObject
61
+ # >>
62
+ # >> Description:
63
+ # >> This object is an instance of the String class.
64
+ # >> A String object is an expression that can hold
65
+ # >> letters, numbers and all sorts of different characters,
66
+ # >> as long as they are surrounded by single ('')
67
+ # >> or double ("") quotes.
68
+ # >>
69
+ # >> Type RubyTutor.available_methods String
70
+ # >> to see all of the methods available.
71
+ ```
72
+
73
+ ### explain/describe
74
+
75
+ `explain` outputs the first half of `explain_full` while `describe` outputs the second half of `explain_full`.
76
+
77
+ Examples:
78
+
79
+ ```ruby
80
+ RubyTutor.explain 'string'
81
+
82
+ # >> Instance of Class: String
83
+ # >> Value: string
84
+ # >> Length: 6
85
+ # >> Mutable? Yes
86
+ # >> Object ID: 70179170680460
87
+ # >> Inhertits From: Comparable, Object, Kernel, BasicObject
88
+
89
+ RubyTutor.describe 'string'
90
+
91
+ # >> Description:
92
+ # >> This object is an instance of the String class.
93
+ # >> A String object is an expression that can hold
94
+ # >> letters, numbers and all sorts of different characters,
95
+ # >> as long as they are surrounded by single ('')
96
+ # >> or double ("") quotes.
97
+ # >>
98
+ # >> Type RubyTutor.available_methods String
99
+ # >> to see all of the methods available.
100
+ ```
101
+
102
+ All descriptions were copied and edited from [Ruby-Docs](https://ruby-doc.org/)
103
+
104
+ Sidenote: When passing in a Hash, use the parentheses notation to avoid an error.
105
+
106
+ `RubyTutor.explain({a: 1, b: 2, c: 3})`
107
+
108
+ ### available_methods
109
+
110
+ Lastly, `available_methods` outputs all the available methods for the object passed in. `available_methods` also has an optional filter you can pass in. The filter must be a string and the filter only corresponds to the beginning of the method name. In other words, a filter of `'to'` will return all the methods that begin with `'to'`.
111
+
112
+ If another object is used for the filter instead of a string, the program will ignore it and return all available methods for the object passed in.
113
+
114
+ Example output:
115
+
116
+ ```ruby
117
+ RubyTutor.available_methods BasicObject
118
+
119
+ # >> Available Methods:
120
+ # >> !
121
+ # >> !=
122
+ # >> !~
123
+ # >> <
124
+ # >> <=
125
+ # >> <=>
126
+ # >> ==
127
+ # >> ===
128
+ # >> =~
129
+ # >> >
130
+ # >> >=
131
+ # >> __id__
132
+ # >> __send__
133
+ # >> allocate
134
+ # >> ancestors
135
+ # >> autoload
136
+ # >> autoload?
137
+ # >> class
138
+ # >> class_eval
139
+ # >> class_exec
140
+ # >> class_variable_defined?
141
+ # >> class_variable_get
142
+ # >> class_variable_set
143
+ # >> class_variables
144
+ #...(truncated for brevity)
145
+
146
+ RubyTutor.available_methods BasicObject, 'al'
147
+
148
+ # >> Available Methods:
149
+ # >> allocate
150
+ ```
151
+
152
+ ## Classes Supported
153
+
154
+ The classes that are currently supported and have descriptions when `RubyTutor.describe` is called are:
155
+
156
+ * Array
157
+ * Bignum
158
+ * Class
159
+ * FalseClass
160
+ * Fixnum
161
+ * Float
162
+ * Hash
163
+ * Module
164
+ * NilClass
165
+ * Proc
166
+ * Range
167
+ * Regexp
168
+ * String
169
+ * Struct
170
+ * Symbol
171
+ * TrueClass
172
+
173
+ Any other class will return `No further description available at this time.` as a description.
174
+
175
+ ## Development
176
+
177
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
178
+
179
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
180
+
181
+ ## Contributing
182
+
183
+ Bug reports and pull requests are welcome on GitHub at https://github.com/sunny-b/RubyTutor.
184
+
185
+
186
+ ## License
187
+
188
+ The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ require "bundler/gem_tasks"
2
+ require "rake/testtask"
3
+
4
+ Rake::TestTask.new(:test) do |t|
5
+ t.libs << "test"
6
+ t.libs << "lib"
7
+ t.test_files = FileList['test/**/*_test.rb']
8
+ end
9
+
10
+ task :default => :test
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "tutor"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,10 @@
1
+ Arrays are ordered and integer-indexed collections
2
+ of objects. The indexes of Arrays are 0 based, meaning
3
+ that they start at 0. Negative indexes count back from
4
+ the last elements in the collection. -1 indicates the
5
+ last element, -2 is the second to last, and so on. An item
6
+ is retrieved from the collection using bracket notation ([]).
7
+
8
+ Example:
9
+ arr = [1, 2, 3]
10
+ arr[0] #=> 1
@@ -0,0 +1,9 @@
1
+ Bignum objects hold integers outside the range of
2
+ Fixnum. Bignum objects are created automatically
3
+ when integer calculations would otherwise overflow
4
+ a Fixnum. When a calculation involving Bignum objects
5
+ returns a result that will fit in a Fixnum, the
6
+ result is automatically converted. Bignum parameter
7
+ passing works with references to the object. This is
8
+ different from the Fixnum class, where the object
9
+ itself is passed.
@@ -0,0 +1,16 @@
1
+ Classes in Ruby are first-class objects and each
2
+ is an instance of class Class. Each class is also
3
+ a global constant and can be used in any part of a
4
+ program. Class names are capitalized to differentiate
5
+ themselves and to show that they are constants.
6
+ Creating new classes is simple and fundamental to
7
+ object oriented programming using Ruby.
8
+
9
+ Example:
10
+ class Name
11
+ def initialize
12
+ print "Creating a new instance of #{self.name}"
13
+ end
14
+ end
15
+
16
+ Name.new #=> "Creating a new instance of Name"
@@ -0,0 +1,5 @@
1
+ The global value false is the only instance of
2
+ class FalseClass and represents a logically false
3
+ value in boolean expressions. The class provides
4
+ operators allowing false to participate correctly
5
+ in logical expressions.
@@ -0,0 +1,15 @@
1
+ Fixnum objects hold Integer values. If any integer
2
+ exceeds the Fixnum maximum value on your machine,
3
+ it will be converted to a Bignum. Fixnum objects
4
+ have immediate value. This means that when they are
5
+ assigned or passed as parameters, the actual object
6
+ is passed, rather than a reference to that object.
7
+ Fixnum objects are also immutable, meaning that the
8
+ value assigned to that object id will not change no
9
+ matter what methods or operations executed. Methods
10
+ such as '+' or '-' return a new Fixnum and do not
11
+ affect the original value.
12
+
13
+ As a sidenote: any mathematical operations the involve
14
+ two Integers will return an Integer. Meaning that any
15
+ decimals that would normally be left over will be rounded.
@@ -0,0 +1,5 @@
1
+ Float objects represent inexact real numbers and can
2
+ contain decimal values. Arithmetic with Float point numbers
3
+ can be inexact and should be cautioned. Any mathematical
4
+ operations involving a Float number will always return
5
+ a Float number.
@@ -0,0 +1,12 @@
1
+ Hash objects are similar to Arrays in that they are
2
+ a collection. However, Hashes are more similar to
3
+ dictionaries in that they have keys, or terms, that
4
+ relate to their values, or definitions. Any object can
5
+ be used as a key, including other hashes. Hashes are
6
+ known as associative arrays and use bracket notation
7
+ to retrieve elements. Unlike Arrays, Hashes use the keys
8
+ to retrieve the values.
9
+
10
+ Example:
11
+ hash = { a: 1, b: 2, c: 3 }
12
+ hash[:a] #=> 1
@@ -0,0 +1,24 @@
1
+ A Module is a collection of methods and constants.
2
+ Modules are often used as a way to "mixin" methods
3
+ and constants into different classes that may not
4
+ have similar inheritance. They are also used for
5
+ what is known as "namespacing," where you group
6
+ similar methods or classes. The methods in a module
7
+ may be instance methods or module methods. Instance
8
+ methods appear as methods in a class when the module
9
+ is included, module methods do not. In order to mix
10
+ a module with a class, the 'Include' method is used.
11
+
12
+ Example:
13
+ module Speak
14
+ def world
15
+ puts "Hello World"
16
+ end
17
+ end
18
+
19
+ class Hello
20
+ include Speak
21
+ end
22
+
23
+ hello = Hello.new
24
+ hello.world #=> "Hello World"
@@ -0,0 +1,5 @@
1
+ The NilClass is the class that houses the singleton
2
+ object 'nil'. The NilClass is Ruby's version of null
3
+ which can be found in other languages such as Java or C.
4
+ Everything is an object in Ruby, so even 'nil' has
5
+ methods that it can take advantage of.
@@ -0,0 +1,16 @@
1
+ Proc objects are blocks of code that have been
2
+ bound to a set of local variables. Once bound,
3
+ the code may be called in different contexts and
4
+ still access those variables. Procs can be used
5
+ like variables themselves and passed to functions
6
+ as arguments. In order to execute the Proc, the
7
+ 'call' method should be used.
8
+
9
+ Example:
10
+ square = Proc.new {|n| n**2}
11
+
12
+ def exec_proc(block, num)
13
+ block.call(num)
14
+ end
15
+
16
+ exec_proc(square), 6) #=> 36
@@ -0,0 +1,14 @@
1
+ A Range object represents an interval—a set of
2
+ values with a beginning and an end. Ranges may
3
+ be constructed using the s..e and s...e literals.
4
+ Ranges constructed using .. run from the beginning to
5
+ the end inclusively. Those created using ... exclude
6
+ the end value. When used as an iterator, ranges return
7
+ each value in the sequence. Range objects are used
8
+ often in case statements, where the cover? Range
9
+ method is used to determine is the case value is
10
+ included in the range.
11
+
12
+ Examples:
13
+ array = (1...5).to_a
14
+ array[0..-1] => [1, 2, 3, 4]
@@ -0,0 +1,17 @@
1
+ A Regexp holds a regular expression, used to match
2
+ a pattern against strings. Regexps are created using
3
+ the /.../ literals, and by the Regexp::new
4
+ constructor. Regular expressions (regexps) are patterns
5
+ which describe the contents of a string. They’re used
6
+ for testing whether a string contains a given pattern,
7
+ or extracting the portions that string. They are
8
+ created with the /pat/ literals or the
9
+ Regexp.new constructor. If a string contains the
10
+ pattern, it is said to 'match'. A literal string
11
+ matches itself.
12
+
13
+ Examples:
14
+ /hay/ =~ 'haystack' #=> 0
15
+ /y/.match('haystack') #=> #<MatchData "y">
16
+ /needle/.match('haystack') #=> nil
17
+ /hay/.match('haystack') #=> #<MatchData "hay">
@@ -0,0 +1,4 @@
1
+ A String object is an expression that can hold
2
+ letters, numbers and all sorts of different characters,
3
+ as long as they are surrounded by single ('')
4
+ or double ("") quotes.
@@ -0,0 +1,15 @@
1
+ A Struct is a convenient way to bundle a number of
2
+ attributes together, using accessor methods, without
3
+ having to write an explicit class. The Struct class
4
+ is a generator of specific classes, each one of which
5
+ is defined to hold a set of variables and their
6
+ accessors. While Modules house behaviors in instance
7
+ methods, Structs house mainly behaviors in variables
8
+ and accessors.
9
+
10
+ Examples:
11
+ Customer = Struct.new(:name, :address, :zip)
12
+ joe = Customer.new("Joe Smith", "123 Maple, Anytown NC", 12345)
13
+ joe.name #=> Joe Smith
14
+ joe.address #=> 123 Maple, Anytown NC
15
+ joe.zip #=> 12345
@@ -0,0 +1,9 @@
1
+ Symbol objects represent names inside the Ruby
2
+ interpreter. They are generated using the :name
3
+ literal syntax, and by the various to_sym methods.
4
+ While :'string' is also an acceptable form of a
5
+ symbol, this syntax is rarely used and generally
6
+ frowned upon. Symbols are also known as immutable,
7
+ meaning that a symbol cannot be changed when it is
8
+ created, only replaced. This makes Symbols ideal as
9
+ keys in Hashes.
@@ -0,0 +1,5 @@
1
+ The global value true is the only instance of
2
+ class TrueClass and represents a logically true
3
+ value in boolean expressions. The class provides
4
+ operators allowing true to be used in logical
5
+ expressions.
@@ -0,0 +1 @@
1
+ No further description available at this time.
@@ -0,0 +1 @@
1
+ This object is an instance of the %{class} class.
@@ -0,0 +1,3 @@
1
+
2
+ Type RubyTutor.available_methods %{class}
3
+ to see all of the methods available.
data/lib/rubytutor.rb ADDED
@@ -0,0 +1,121 @@
1
+ require_relative 'rubytutor/version'
2
+
3
+ # RubyTutor main class
4
+ class RubyTutor
5
+ def self.explain_full(object)
6
+ puts full_explanation(object).join("\n")
7
+ end
8
+
9
+ def self.describe(object)
10
+ puts retrieve_description(object)
11
+ end
12
+
13
+ def self.explain(object)
14
+ puts retrieve_explanation(object).join("\n")
15
+ end
16
+
17
+ def self.available_methods(object, filter_str = nil)
18
+ class_name = object.class == Class ? object : object.class
19
+ methods = retrieve_methods(class_name, filter_str)
20
+
21
+ puts methods
22
+ end
23
+
24
+ private_class_method
25
+
26
+ def self.retrieve_methods(class_name, filter_str = nil)
27
+ method_names = class_name.methods.sort
28
+
29
+ if valid?(filter_str)
30
+ last_index = filter_str.length
31
+
32
+ method_names = method_names.map(&:to_s).select do |method|
33
+ method[0...last_index] == filter_str
34
+ end
35
+ end
36
+
37
+ "Available Methods: \n" + method_names.join("\n").to_s + "\n\n"
38
+ end
39
+
40
+ def self.retrieve_explanation(object)
41
+ class_name = retrieve_class(object)
42
+ ancestors = class_name.ancestors[1..-1].join(', ')
43
+ value = object.nil? ? 'nil' : object
44
+
45
+ construct_explain(object, class_name, ancestors, value)
46
+ end
47
+
48
+ def self.construct_explain(object, class_name, ancestors, value)
49
+ text = []
50
+
51
+ text << "Instance of Class: #{class_name}"
52
+ text << "Value: #{value}"
53
+
54
+ variable_text(object, text)
55
+
56
+ text << "Mutable? #{object.frozen? ? 'No' : 'Yes'}"
57
+ text << "Object ID: #{object.object_id}"
58
+ text << "Inhertits From: #{ancestors}"
59
+ text << ''
60
+ end
61
+
62
+ # Not pretty, but this is the method that determines which strings will go
63
+ # Into each 'explain' or 'explain_full' call
64
+ def self.variable_text(object, text)
65
+ text << "Return Value: #{object.call}" if need?(object, :call)
66
+ text << "Source Value: #{object.source}" if need?(object, :source)
67
+ text << "Members: #{object.members.join(', ')}" if need?(object, :members)
68
+ text << "Keys: #{object.keys.join(', ')}" if need?(object, :keys)
69
+ text << "Values: #{object.values.join(', ')}" if need?(object, :values)
70
+ text << "Length: #{object.length}" if need?(object, :length)
71
+ end
72
+
73
+ def self.need?(object, method_symbol)
74
+ object.respond_to?(method_symbol)
75
+ end
76
+
77
+ def self.full_explanation(object)
78
+ full_string = []
79
+
80
+ full_string << retrieve_explanation(object)
81
+ full_string << retrieve_description(object)
82
+ full_string.flatten
83
+ end
84
+
85
+ def self.retrieve_description(object)
86
+ class_name = retrieve_class(object)
87
+ description = ["Description:\n"]
88
+ files = []
89
+
90
+ find(files, class_name)
91
+ extract_contents(files, description, object, class_name)
92
+ description.join
93
+ end
94
+
95
+ def self.valid?(letter)
96
+ letter.respond_to?(:match) ? letter.downcase.match(/[a-z]/) : false
97
+ end
98
+
99
+ def self.retrieve_class(object)
100
+ object.respond_to?(:members) ? Struct : object.class
101
+ end
102
+
103
+ def self.extract_contents(files, description, object, class_name)
104
+ files.each do |file_path|
105
+ File.open(file_path) do |file|
106
+ file.each do |line|
107
+ description << format(line, value: object, class: class_name)
108
+ end
109
+ end
110
+ end
111
+ end
112
+
113
+ def self.find(files, class_name)
114
+ class_file = File.expand_path("../descriptions/#{class_name}.txt", __FILE__)
115
+ blank_file = File.expand_path('../descriptions/blank.txt', __FILE__)
116
+
117
+ files << File.expand_path('../descriptions/intro.txt', __FILE__)
118
+ files << (File.file?(class_file) ? class_file : blank_file)
119
+ files << File.expand_path('../descriptions/last.txt', __FILE__)
120
+ end
121
+ end
@@ -0,0 +1,3 @@
1
+ class RubyTutor
2
+ VERSION = "0.1.0"
3
+ end
data/rubytutor.gemspec ADDED
@@ -0,0 +1,36 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'rubytutor/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = "rubytutor"
8
+ spec.version = RubyTutor::VERSION
9
+ spec.authors = ["Sunny"]
10
+ spec.email = ["sjbeatteay@gmail.com"]
11
+
12
+ spec.summary = %q{An irb tool to help new developers use Ruby}
13
+ spec.description = %q{A console tool to help new developers and developers new to Ruby.}
14
+ spec.homepage = "https://github.com/sunny-b/RubyTutor"
15
+ spec.license = "MIT"
16
+
17
+ # # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
18
+ # # to allow pushing to a single host or delete this section to allow pushing to any host.
19
+ # if spec.respond_to?(:metadata)
20
+ # spec.metadata['allowed_push_host'] = "http://rubygems.org"
21
+ # else
22
+ # raise "RubyGems 2.0 or newer is required to protect against " \
23
+ # "public gem pushes."
24
+ # end
25
+
26
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
27
+ f.match(%r{^(test|spec|features)/})
28
+ end
29
+ spec.bindir = "exe"
30
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
31
+ spec.require_paths = ["lib"]
32
+
33
+ spec.add_development_dependency "bundler", "~> 1.13"
34
+ spec.add_development_dependency "rake", "~> 10.0"
35
+ spec.add_development_dependency "minitest", "~> 5.0"
36
+ end
metadata ADDED
@@ -0,0 +1,116 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubytutor
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Sunny
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2017-02-15 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.13'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.13'
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
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ description: A console tool to help new developers and developers new to Ruby.
56
+ email:
57
+ - sjbeatteay@gmail.com
58
+ executables: []
59
+ extensions: []
60
+ extra_rdoc_files: []
61
+ files:
62
+ - ".gitignore"
63
+ - ".travis.yml"
64
+ - Gemfile
65
+ - LICENSE.txt
66
+ - README.md
67
+ - Rakefile
68
+ - bin/console
69
+ - bin/setup
70
+ - lib/descriptions/Array.txt
71
+ - lib/descriptions/Bignum.txt
72
+ - lib/descriptions/Class.txt
73
+ - lib/descriptions/FalseClass.txt
74
+ - lib/descriptions/Fixnum.txt
75
+ - lib/descriptions/Float.txt
76
+ - lib/descriptions/Hash.txt
77
+ - lib/descriptions/Module.txt
78
+ - lib/descriptions/NilClass.txt
79
+ - lib/descriptions/Proc.txt
80
+ - lib/descriptions/Range.txt
81
+ - lib/descriptions/Regexp.txt
82
+ - lib/descriptions/String.txt
83
+ - lib/descriptions/Struct.txt
84
+ - lib/descriptions/Symbol.txt
85
+ - lib/descriptions/TrueClass.txt
86
+ - lib/descriptions/blank.txt
87
+ - lib/descriptions/intro.txt
88
+ - lib/descriptions/last.txt
89
+ - lib/rubytutor.rb
90
+ - lib/rubytutor/version.rb
91
+ - rubytutor.gemspec
92
+ homepage: https://github.com/sunny-b/RubyTutor
93
+ licenses:
94
+ - MIT
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.6.8
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: An irb tool to help new developers use Ruby
116
+ test_files: []