krang 0.0.1rc1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: d255f5a507b47ca59b49a04ee65afa83d355a027
4
+ data.tar.gz: 7aa857179a9bd30725fbb7ca3718abd2c0d57ea0
5
+ SHA512:
6
+ metadata.gz: 8dd13299008ef27e3c7795cfe5fcb93c92cacdef55a8716eaa0216349a6a5e8b983851bde4ab351e3b07748780a2533b01cc7a46fc63b292c7df52eb17c5d649
7
+ data.tar.gz: 8cf4930f3115044003d1cba3d7626ffd86701ba002891d94101ab465bd3685bd37d2a5249d368d9fbf2c501e32dffa525a12aaf3f2593937fc1a5ac2a9e85caa
data/.gitignore ADDED
@@ -0,0 +1,51 @@
1
+ *.gem
2
+ *.rbc
3
+ /.config
4
+ /coverage/
5
+ /InstalledFiles
6
+ /pkg/
7
+ /spec/reports/
8
+ /spec/examples.txt
9
+ /test/tmp/
10
+ /test/version_tmp/
11
+ /tmp/
12
+
13
+ # Used by dotenv library to load environment variables.
14
+ # .env
15
+
16
+ ## Specific to RubyMotion:
17
+ .dat*
18
+ .repl_history
19
+ build/
20
+ *.bridgesupport
21
+ build-iPhoneOS/
22
+ build-iPhoneSimulator/
23
+
24
+ ## Specific to RubyMotion (use of CocoaPods):
25
+ #
26
+ # We recommend against adding the Pods directory to your .gitignore. However
27
+ # you should judge for yourself, the pros and cons are mentioned at:
28
+ # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
29
+ #
30
+ # vendor/Pods/
31
+
32
+ ## Documentation cache and generated files:
33
+ /.yardoc/
34
+ /_yardoc/
35
+ /doc/
36
+ /rdoc/
37
+
38
+ ## Environment normalization:
39
+ /.bundle/
40
+ /vendor/bundle
41
+ /lib/bundler/man/
42
+
43
+ # for a library or gem, you might want to ignore these files since the code is
44
+ # intended to run in multiple environments; otherwise, check them in:
45
+ # Gemfile.lock
46
+ # .ruby-version
47
+ # .ruby-gemset
48
+
49
+ # unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
50
+ .rvmrc
51
+ *.log
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,97 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ krang (0.0.1rc1)
5
+ awesome_print (~> 1.8, >= 1.8.0)
6
+ radiator (~> 0.2, >= 0.2.2)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ addressable (2.5.1)
12
+ public_suffix (~> 2.0, >= 2.0.2)
13
+ awesome_print (1.8.0)
14
+ bitcoin-ruby (0.0.10)
15
+ byebug (9.0.6)
16
+ chronic (0.10.2)
17
+ codeclimate-test-reporter (0.5.2)
18
+ simplecov (>= 0.7.1, < 1.0.0)
19
+ coderay (1.1.1)
20
+ crack (0.4.3)
21
+ safe_yaml (~> 1.0.0)
22
+ delorean (2.1.0)
23
+ chronic
24
+ docile (1.1.5)
25
+ ethon (0.10.1)
26
+ ffi (>= 1.3.0)
27
+ faraday (0.12.1)
28
+ multipart-post (>= 1.2, < 3)
29
+ ffi (1.9.18)
30
+ hashdiff (0.3.4)
31
+ hashie (3.5.6)
32
+ json (1.8.6)
33
+ little-plugger (1.1.4)
34
+ logging (2.2.2)
35
+ little-plugger (~> 1.1)
36
+ multi_json (~> 1.10)
37
+ method_source (0.8.2)
38
+ minitest (5.10.2)
39
+ minitest-line (0.6.4)
40
+ minitest (~> 5.0)
41
+ minitest-proveit (1.0.0)
42
+ minitest (> 5, < 7)
43
+ multi_json (1.12.1)
44
+ multipart-post (2.0.0)
45
+ net-http-persistent (2.9.4)
46
+ pry (0.10.4)
47
+ coderay (~> 1.1.0)
48
+ method_source (~> 0.8.1)
49
+ slop (~> 3.4)
50
+ public_suffix (2.0.5)
51
+ radiator (0.2.2)
52
+ bitcoin-ruby (= 0.0.10)
53
+ ffi (= 1.9.18)
54
+ hashie (~> 3.5, >= 3.5.5)
55
+ json (~> 1.8, >= 1.8.6)
56
+ logging (~> 2.2, >= 2.2.0)
57
+ net-http-persistent (~> 2.9, >= 2.9.4)
58
+ rake (12.0.0)
59
+ safe_yaml (1.0.4)
60
+ simplecov (0.14.1)
61
+ docile (~> 1.1.0)
62
+ json (>= 1.8, < 3)
63
+ simplecov-html (~> 0.10.0)
64
+ simplecov-html (0.10.1)
65
+ slop (3.6.0)
66
+ typhoeus (1.1.2)
67
+ ethon (>= 0.9.0)
68
+ vcr (3.0.3)
69
+ webmock (3.0.1)
70
+ addressable (>= 2.3.6)
71
+ crack (>= 0.3.2)
72
+ hashdiff
73
+ yard (0.9.9)
74
+
75
+ PLATFORMS
76
+ ruby
77
+
78
+ DEPENDENCIES
79
+ bundler (~> 1.11)
80
+ byebug (~> 9.0, >= 9.0.6)
81
+ codeclimate-test-reporter (~> 0.5.2)
82
+ delorean (~> 2.1, >= 2.1.0)
83
+ faraday (~> 0.12, >= 0.12.1)
84
+ krang!
85
+ minitest (~> 5.10, >= 5.10.2)
86
+ minitest-line (~> 0.6, >= 0.6.4)
87
+ minitest-proveit (~> 1.0, >= 1.0.0)
88
+ pry (~> 0.10, >= 0.10.4)
89
+ rake (~> 12.0, >= 12.0.0)
90
+ simplecov (~> 0.10, >= 0.10.1)
91
+ typhoeus (~> 1.1, >= 1.1.2)
92
+ vcr (~> 3.0, >= 3.0.3)
93
+ webmock (~> 3.0, >= 3.0.1)
94
+ yard (~> 0.9, >= 0.9.9)
95
+
96
+ BUNDLED WITH
97
+ 1.14.6
data/LICENSE ADDED
@@ -0,0 +1,41 @@
1
+ CC0 1.0 Universal (CC0 1.0)
2
+ Public Domain Dedication
3
+ https://creativecommons.org/publicdomain/zero/1.0/
4
+
5
+ This is a human-readable summary of the Legal Code:
6
+ https://creativecommons.org/publicdomain/zero/1.0/legalcode
7
+
8
+ Disclaimer
9
+
10
+ The Commons Deed is not a legal instrument. It is simply a handy reference for
11
+ understanding the CC0 Legal Code, a human-readable expression of some of its key
12
+ terms. Think of it as the user-friendly interface to the CC0 Legal Code beneath.
13
+ This Deed itself has no legal value, and its contents do not appear in CC0.
14
+ Creative Commons is not a law firm and does not provide legal services.
15
+ Distributing, displaying, or linking to this Commons Deed does not create an
16
+ attorney-client relationship.
17
+
18
+ Creative Commons has not verified the copyright status of any work to which CC0
19
+ has been applied. CC makes no warranties about any work or its copyright status
20
+ in any jurisdiction, and disclaims all liability for all uses of any work.
21
+
22
+ No Copyright
23
+
24
+ The person who associated a work with this deed has dedicated the work to the
25
+ public domain by waiving all of his or her rights to the work worldwide under
26
+ copyright law, including all related and neighboring rights, to the extent
27
+ allowed by law.
28
+
29
+ You can copy, modify, distribute and perform the work, even for commercial
30
+ purposes, all without asking permission. See Other Information below.
31
+
32
+ Other Information
33
+
34
+ * In no way are the patent or trademark rights of any person affected by CC0,
35
+ nor are the rights that other persons may have in the work or in how the work
36
+ is used, such as publicity or privacy rights.
37
+ * Unless expressly stated otherwise, the person who associated a work with this
38
+ deed makes no warranties about the work, and disclaims liability for all uses
39
+ of the work, to the fullest extent permitted by applicable law.
40
+ * When using or citing the work, you should not imply endorsement by the author
41
+ or the affirmer.
data/README.md ADDED
@@ -0,0 +1,81 @@
1
+ krang
2
+ =====
3
+
4
+ [Krang](https://github.com/inertia186/krang) is a bot framework for STEEM.
5
+
6
+ <center>
7
+ <img src="http://i.imgur.com/sQHfEQD.jpg" />
8
+ </center>
9
+
10
+ ---
11
+
12
+ This framework will make it easier to write bots on the STEEM blockchain.
13
+
14
+ ---
15
+
16
+ #### Install
17
+
18
+ To use this [Radiator](https://steemit.com/steem/@inertia/radiator-steem-ruby-api-client) framework:
19
+
20
+ I've tested it on various versions of ruby. The oldest one I got it to work was:
21
+
22
+ `ruby 2.0.0p645 (2015-04-13 revision 50299) [x86_64-darwin14.4.0]`
23
+
24
+ In your `Gemfile`, add:
25
+
26
+ ```ruby
27
+ gem 'krang'
28
+ ```
29
+
30
+ In your app, create a class:
31
+
32
+ ```ruby
33
+ require 'rubygems'
34
+ require 'bundler/setup'
35
+
36
+ Bundler.require
37
+
38
+ module MyBot
39
+ include Krang
40
+
41
+ extend self
42
+
43
+ app_key :my_bot
44
+ end
45
+
46
+ puts MyBot.find_comment('inertia', 'macintosh-napintosh')
47
+ ```
48
+
49
+ ##### Configure
50
+
51
+ Edit the `config.yml` file.
52
+
53
+ ```yaml
54
+ :my_bot:
55
+ :block_mode: irreversible
56
+
57
+ :chain_options:
58
+ :chain: steem
59
+ :url: https://steemd.steemit.com
60
+ ```
61
+
62
+ ---
63
+
64
+ ## Tests
65
+
66
+ * Clone the client repository into a directory of your choice:
67
+ * `git clone https://github.com/inertia186/krang.git`
68
+ * Navigate into the new folder
69
+ * `cd krang`
70
+ * Basic tests can be invoked as follows:
71
+ * `rake`
72
+ * To run tests with parallelization and local code coverage:
73
+ * `HELL_ENABLED=true rake`
74
+
75
+ ## Get in touch!
76
+
77
+ If you're using Krang, I'd love to hear from you. Drop me a line and tell me what you think! I'm @inertia on STEEM and Discord.
78
+
79
+ ## License
80
+
81
+ I don't believe in intellectual "property". If you do, consider Krang as licensed under a Creative Commons [![CC0](http://i.creativecommons.org/p/zero/1.0/80x15.png)](http://creativecommons.org/publicdomain/zero/1.0/) License.
data/Rakefile ADDED
@@ -0,0 +1,43 @@
1
+ require 'bundler/gem_tasks'
2
+ require 'rake/testtask'
3
+ require 'yard'
4
+ require 'krang'
5
+
6
+ Encoding.default_external = Encoding::UTF_8
7
+ Encoding.default_internal = Encoding::UTF_8
8
+
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'test'
11
+ t.libs << 'lib'
12
+ t.test_files = FileList['test/**/*_test.rb']
13
+ t.ruby_opts << if ENV['HELL_ENABLED']
14
+ '-W2'
15
+ else
16
+ '-W1'
17
+ end
18
+ end
19
+
20
+ YARD::Rake::YardocTask.new do |t|
21
+ t.files = ['lib/**/*.rb']
22
+ end
23
+
24
+ task default: :test
25
+
26
+ task :console do
27
+ exec "irb -r krang -I ./lib"
28
+ end
29
+
30
+ task :build do
31
+ exec 'gem build krang.gemspec'
32
+ end
33
+
34
+ task :push do
35
+ exec "gem push krang-#{Krang::VERSION}.gem"
36
+ end
37
+
38
+ # We're not going to yank on a regular basis, but this is how it's done if you
39
+ # really want a task for that for some reason.
40
+
41
+ # task :yank do
42
+ # exec "gem yank krang -v #{Krang::VERSION}"
43
+ # end
data/krang.gemspec ADDED
@@ -0,0 +1,38 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'krang/version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'krang'
8
+ spec.version = Krang::VERSION
9
+ spec.authors = ['Anthony Martin']
10
+ spec.email = ['krang@martin-studio.com']
11
+
12
+ spec.summary = %q{Bot framework for STEEM.}
13
+ spec.description = %q{That frames your work.}
14
+ spec.homepage = 'https://github.com/inertia186/krang'
15
+ spec.license = 'CC0 1.0'
16
+
17
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test)/}) }
18
+ spec.require_paths = ['lib']
19
+
20
+ spec.add_development_dependency 'bundler', '~> 1.11'
21
+ spec.add_development_dependency 'rake', '~> 12.0', '>= 12.0.0'
22
+ spec.add_development_dependency 'minitest', '~> 5.10', '>= 5.10.2'
23
+ spec.add_development_dependency 'minitest-line', '~> 0.6', '>= 0.6.4'
24
+ spec.add_development_dependency 'minitest-proveit', '~> 1.0', '>= 1.0.0'
25
+ spec.add_development_dependency 'webmock', '~> 3.0', '>= 3.0.1'
26
+ spec.add_development_dependency 'vcr', '~> 3.0', '>= 3.0.3'
27
+ spec.add_development_dependency 'faraday', '~> 0.12', '>= 0.12.1'
28
+ spec.add_development_dependency 'typhoeus', '~> 1.1', '>= 1.1.2'
29
+ spec.add_development_dependency 'simplecov', '~> 0.10', '>= 0.10.1'
30
+ spec.add_development_dependency 'codeclimate-test-reporter', '~> 0.5.2'
31
+ spec.add_development_dependency 'yard', '~> 0.9', '>= 0.9.9'
32
+ spec.add_development_dependency 'byebug', '~> 9.0', '>= 9.0.6'
33
+ spec.add_development_dependency 'pry', '~> 0.10', '>= 0.10.4'
34
+ spec.add_development_dependency 'delorean', '~> 2.1', '>= 2.1.0'
35
+
36
+ spec.add_dependency 'radiator', '~> 0.2', '>= 0.2.2'
37
+ spec.add_dependency 'awesome_print', '~> 1.8', '>= 1.8.0'
38
+ end
@@ -0,0 +1,72 @@
1
+ module Krang
2
+ require 'krang/utils'
3
+
4
+ module Chain
5
+ include Utils
6
+
7
+ def reset_api
8
+ @api = nil
9
+ end
10
+
11
+ def backoff
12
+ Random.rand(3..20)
13
+ end
14
+
15
+ def api
16
+ with_api
17
+ end
18
+
19
+ def with_api(&block)
20
+ loop do
21
+ @api ||= Radiator::Api.new(chain_options)
22
+
23
+ return @api if block.nil?
24
+
25
+ begin
26
+ yield @api
27
+ break
28
+ rescue => e
29
+ warning "API exception, retrying (#{e})", e
30
+ reset_api
31
+ sleep backoff
32
+ redo
33
+ end
34
+ end
35
+ end
36
+
37
+ def reset_properties
38
+ @properties = nil
39
+ @latest_properties = nil
40
+ end
41
+
42
+ def properties
43
+ if !@latest_properties.nil? && Time.now - @latest_properties > 30
44
+ @properties = nil
45
+ @latest_properties = nil
46
+ end
47
+
48
+ return @properties unless @properties.nil?
49
+
50
+ response = nil
51
+ with_api { |api| response = api.get_dynamic_global_properties }
52
+ response.result.tap do |properties|
53
+ @latest_properties = Time.parse(properties.time + 'Z')
54
+ @properties = properties
55
+ end
56
+ end
57
+
58
+ def block_time
59
+ Time.parse(properties.time + 'Z')
60
+ end
61
+
62
+ def find_comment(author, permlink)
63
+ response = nil
64
+ with_api { |api| response = api.get_content(author, permlink) }
65
+ comment = response.result
66
+
67
+ trace comment
68
+
69
+ comment unless comment.id == 0
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,63 @@
1
+ module Krang
2
+ module Config
3
+ @@override_config = nil
4
+
5
+ def override_config(override_config)
6
+ @@override_config = override_config
7
+ end
8
+
9
+ def config
10
+ return @@override_config if !!@@override_config
11
+
12
+ config_yml = 'config.yml'
13
+ config = if File.exist?(config_yml)
14
+ YAML.load_file(config_yml)
15
+ else
16
+ raise "Create a file: #{config_yml}"
17
+ end
18
+ end
19
+
20
+ def init_defaults
21
+ @default_logger = Logger.new("#{@app_key}.log") if !!@app_key
22
+
23
+ @default_chain_options = {
24
+ logger: @default_logger
25
+ }
26
+ end
27
+
28
+ def app_key(app_key = nil)
29
+ @app_key = app_key unless app_key.nil?
30
+ raise 'Need to override app_key.' unless !!@app_key
31
+ init_defaults
32
+ @app_key.to_sym
33
+ end
34
+
35
+ def agent_id(agent_id = nil)
36
+ @agent_id = agent_id unless agent_id.nil?
37
+ @agent_id || Krang::AGENT_ID
38
+ end
39
+
40
+ def default_value(key)
41
+ ENV["#{app_key.to_s.upcase}_#{key.to_s.upcase}"]
42
+ end
43
+
44
+ def block_mode
45
+ default_value(:blockmode) || config[app_key][:block_mode]
46
+ end
47
+
48
+ def chain_options
49
+ chain_options = config[:chain_options].merge(@default_chain_options)
50
+
51
+ chain = default_value(:chain_options_chain)
52
+ chain_options = chain_options.merge(chain: chain.to_s) if !!chain
53
+ url = default_value(:chain_options_url)
54
+ chain_options = chain_options.merge(url: url) if !!url
55
+
56
+ chain_options.dup
57
+ end
58
+
59
+ def logger
60
+ @default_logger
61
+ end
62
+ end
63
+ end
@@ -0,0 +1,76 @@
1
+ module Krang
2
+ require 'krang/config'
3
+
4
+ module Utils
5
+ include Config
6
+
7
+ LOGGING_LEVELS = {
8
+ ERR: 1, # error
9
+ WRN: 2, # warn
10
+ INF: 3, # info
11
+ DBG: 4, # debug
12
+ TRC: 5, # trace
13
+ }
14
+
15
+ def log_level
16
+ level = ENV['LOG'].to_s.upcase.to_sym || :DBG
17
+ LOGGING_LEVELS[level] || 4
18
+ end
19
+
20
+ def semaphore
21
+ @semaphore ||= Mutex.new
22
+ end
23
+
24
+ def console(mode, msg, detail = nil)
25
+ color = case mode
26
+ when :INF then :green
27
+ when :WRN then :yellow
28
+ when :ERR then :red
29
+ when :DBG then :yellowish
30
+ else; :pale
31
+ end
32
+
33
+ output = {mode => msg}
34
+
35
+ unless detail.nil?
36
+ output[:detail] = detail
37
+ output[:backtrace] = detail.backtrace rescue nil
38
+ end
39
+
40
+ multiline = if mode == :TRC
41
+ true
42
+ else
43
+ output.size > 1
44
+ end
45
+
46
+ if log_level >= (LOGGING_LEVELS[mode] || 4)
47
+ case mode
48
+ when :INF then logger.info msg
49
+ when :WRN then logger.warn msg
50
+ when :ERR then logger.error msg
51
+ when :DBG then logger.debug msg
52
+ else; logger.debug msg
53
+ end
54
+
55
+ semaphore.synchronize do
56
+ ap(output, {multiline: multiline, color: {string: color}})
57
+ end
58
+ end
59
+ end
60
+
61
+ def trace(msg, detail = nil); console(:TRC, msg, detail); end
62
+ def debug(msg, detail = nil); console(:DBG, msg, detail); end
63
+ def info(msg, detail = nil); console(:INF, msg, detail); end
64
+ def warning(msg, detail = nil); console(:WRN, msg, detail); end
65
+ def error(msg, detail = nil); console(:ERR, msg, detail); end
66
+
67
+ def parse_slug(slug)
68
+ slug = slug.downcase.split('@').last
69
+ author_name = slug.split('/')[0]
70
+ permlink = slug.split('/')[1..-1].join('/')
71
+ permlink = permlink.split('?')[0]
72
+
73
+ [author_name, permlink]
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,4 @@
1
+ module Krang
2
+ VERSION = '0.0.1rc1'
3
+ AGENT_ID = "krang/#{VERSION}"
4
+ end
data/lib/krang.rb ADDED
@@ -0,0 +1,14 @@
1
+ require 'radiator'
2
+ require 'awesome_print'
3
+ require 'yaml'
4
+ # require 'pry'
5
+
6
+ Bundler.require
7
+
8
+ module Krang
9
+ require 'krang/chain'
10
+
11
+ include Chain
12
+
13
+ extend self
14
+ end
metadata ADDED
@@ -0,0 +1,384 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: krang
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1rc1
5
+ platform: ruby
6
+ authors:
7
+ - Anthony Martin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-07-16 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.11'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '12.0'
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: 12.0.0
37
+ type: :development
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - "~>"
42
+ - !ruby/object:Gem::Version
43
+ version: '12.0'
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: 12.0.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: minitest
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '5.10'
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: 5.10.2
57
+ type: :development
58
+ prerelease: false
59
+ version_requirements: !ruby/object:Gem::Requirement
60
+ requirements:
61
+ - - "~>"
62
+ - !ruby/object:Gem::Version
63
+ version: '5.10'
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: 5.10.2
67
+ - !ruby/object:Gem::Dependency
68
+ name: minitest-line
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '0.6'
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 0.6.4
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - "~>"
82
+ - !ruby/object:Gem::Version
83
+ version: '0.6'
84
+ - - ">="
85
+ - !ruby/object:Gem::Version
86
+ version: 0.6.4
87
+ - !ruby/object:Gem::Dependency
88
+ name: minitest-proveit
89
+ requirement: !ruby/object:Gem::Requirement
90
+ requirements:
91
+ - - "~>"
92
+ - !ruby/object:Gem::Version
93
+ version: '1.0'
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: 1.0.0
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.0'
104
+ - - ">="
105
+ - !ruby/object:Gem::Version
106
+ version: 1.0.0
107
+ - !ruby/object:Gem::Dependency
108
+ name: webmock
109
+ requirement: !ruby/object:Gem::Requirement
110
+ requirements:
111
+ - - "~>"
112
+ - !ruby/object:Gem::Version
113
+ version: '3.0'
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: 3.0.1
117
+ type: :development
118
+ prerelease: false
119
+ version_requirements: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - "~>"
122
+ - !ruby/object:Gem::Version
123
+ version: '3.0'
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 3.0.1
127
+ - !ruby/object:Gem::Dependency
128
+ name: vcr
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '3.0'
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 3.0.3
137
+ type: :development
138
+ prerelease: false
139
+ version_requirements: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '3.0'
144
+ - - ">="
145
+ - !ruby/object:Gem::Version
146
+ version: 3.0.3
147
+ - !ruby/object:Gem::Dependency
148
+ name: faraday
149
+ requirement: !ruby/object:Gem::Requirement
150
+ requirements:
151
+ - - "~>"
152
+ - !ruby/object:Gem::Version
153
+ version: '0.12'
154
+ - - ">="
155
+ - !ruby/object:Gem::Version
156
+ version: 0.12.1
157
+ type: :development
158
+ prerelease: false
159
+ version_requirements: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - - "~>"
162
+ - !ruby/object:Gem::Version
163
+ version: '0.12'
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: 0.12.1
167
+ - !ruby/object:Gem::Dependency
168
+ name: typhoeus
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - "~>"
172
+ - !ruby/object:Gem::Version
173
+ version: '1.1'
174
+ - - ">="
175
+ - !ruby/object:Gem::Version
176
+ version: 1.1.2
177
+ type: :development
178
+ prerelease: false
179
+ version_requirements: !ruby/object:Gem::Requirement
180
+ requirements:
181
+ - - "~>"
182
+ - !ruby/object:Gem::Version
183
+ version: '1.1'
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: 1.1.2
187
+ - !ruby/object:Gem::Dependency
188
+ name: simplecov
189
+ requirement: !ruby/object:Gem::Requirement
190
+ requirements:
191
+ - - "~>"
192
+ - !ruby/object:Gem::Version
193
+ version: '0.10'
194
+ - - ">="
195
+ - !ruby/object:Gem::Version
196
+ version: 0.10.1
197
+ type: :development
198
+ prerelease: false
199
+ version_requirements: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - "~>"
202
+ - !ruby/object:Gem::Version
203
+ version: '0.10'
204
+ - - ">="
205
+ - !ruby/object:Gem::Version
206
+ version: 0.10.1
207
+ - !ruby/object:Gem::Dependency
208
+ name: codeclimate-test-reporter
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - "~>"
212
+ - !ruby/object:Gem::Version
213
+ version: 0.5.2
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - "~>"
219
+ - !ruby/object:Gem::Version
220
+ version: 0.5.2
221
+ - !ruby/object:Gem::Dependency
222
+ name: yard
223
+ requirement: !ruby/object:Gem::Requirement
224
+ requirements:
225
+ - - "~>"
226
+ - !ruby/object:Gem::Version
227
+ version: '0.9'
228
+ - - ">="
229
+ - !ruby/object:Gem::Version
230
+ version: 0.9.9
231
+ type: :development
232
+ prerelease: false
233
+ version_requirements: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - "~>"
236
+ - !ruby/object:Gem::Version
237
+ version: '0.9'
238
+ - - ">="
239
+ - !ruby/object:Gem::Version
240
+ version: 0.9.9
241
+ - !ruby/object:Gem::Dependency
242
+ name: byebug
243
+ requirement: !ruby/object:Gem::Requirement
244
+ requirements:
245
+ - - "~>"
246
+ - !ruby/object:Gem::Version
247
+ version: '9.0'
248
+ - - ">="
249
+ - !ruby/object:Gem::Version
250
+ version: 9.0.6
251
+ type: :development
252
+ prerelease: false
253
+ version_requirements: !ruby/object:Gem::Requirement
254
+ requirements:
255
+ - - "~>"
256
+ - !ruby/object:Gem::Version
257
+ version: '9.0'
258
+ - - ">="
259
+ - !ruby/object:Gem::Version
260
+ version: 9.0.6
261
+ - !ruby/object:Gem::Dependency
262
+ name: pry
263
+ requirement: !ruby/object:Gem::Requirement
264
+ requirements:
265
+ - - "~>"
266
+ - !ruby/object:Gem::Version
267
+ version: '0.10'
268
+ - - ">="
269
+ - !ruby/object:Gem::Version
270
+ version: 0.10.4
271
+ type: :development
272
+ prerelease: false
273
+ version_requirements: !ruby/object:Gem::Requirement
274
+ requirements:
275
+ - - "~>"
276
+ - !ruby/object:Gem::Version
277
+ version: '0.10'
278
+ - - ">="
279
+ - !ruby/object:Gem::Version
280
+ version: 0.10.4
281
+ - !ruby/object:Gem::Dependency
282
+ name: delorean
283
+ requirement: !ruby/object:Gem::Requirement
284
+ requirements:
285
+ - - "~>"
286
+ - !ruby/object:Gem::Version
287
+ version: '2.1'
288
+ - - ">="
289
+ - !ruby/object:Gem::Version
290
+ version: 2.1.0
291
+ type: :development
292
+ prerelease: false
293
+ version_requirements: !ruby/object:Gem::Requirement
294
+ requirements:
295
+ - - "~>"
296
+ - !ruby/object:Gem::Version
297
+ version: '2.1'
298
+ - - ">="
299
+ - !ruby/object:Gem::Version
300
+ version: 2.1.0
301
+ - !ruby/object:Gem::Dependency
302
+ name: radiator
303
+ requirement: !ruby/object:Gem::Requirement
304
+ requirements:
305
+ - - "~>"
306
+ - !ruby/object:Gem::Version
307
+ version: '0.2'
308
+ - - ">="
309
+ - !ruby/object:Gem::Version
310
+ version: 0.2.2
311
+ type: :runtime
312
+ prerelease: false
313
+ version_requirements: !ruby/object:Gem::Requirement
314
+ requirements:
315
+ - - "~>"
316
+ - !ruby/object:Gem::Version
317
+ version: '0.2'
318
+ - - ">="
319
+ - !ruby/object:Gem::Version
320
+ version: 0.2.2
321
+ - !ruby/object:Gem::Dependency
322
+ name: awesome_print
323
+ requirement: !ruby/object:Gem::Requirement
324
+ requirements:
325
+ - - "~>"
326
+ - !ruby/object:Gem::Version
327
+ version: '1.8'
328
+ - - ">="
329
+ - !ruby/object:Gem::Version
330
+ version: 1.8.0
331
+ type: :runtime
332
+ prerelease: false
333
+ version_requirements: !ruby/object:Gem::Requirement
334
+ requirements:
335
+ - - "~>"
336
+ - !ruby/object:Gem::Version
337
+ version: '1.8'
338
+ - - ">="
339
+ - !ruby/object:Gem::Version
340
+ version: 1.8.0
341
+ description: That frames your work.
342
+ email:
343
+ - krang@martin-studio.com
344
+ executables: []
345
+ extensions: []
346
+ extra_rdoc_files: []
347
+ files:
348
+ - ".gitignore"
349
+ - Gemfile
350
+ - Gemfile.lock
351
+ - LICENSE
352
+ - README.md
353
+ - Rakefile
354
+ - krang.gemspec
355
+ - lib/krang.rb
356
+ - lib/krang/chain.rb
357
+ - lib/krang/config.rb
358
+ - lib/krang/utils.rb
359
+ - lib/krang/version.rb
360
+ homepage: https://github.com/inertia186/krang
361
+ licenses:
362
+ - CC0 1.0
363
+ metadata: {}
364
+ post_install_message:
365
+ rdoc_options: []
366
+ require_paths:
367
+ - lib
368
+ required_ruby_version: !ruby/object:Gem::Requirement
369
+ requirements:
370
+ - - ">="
371
+ - !ruby/object:Gem::Version
372
+ version: '0'
373
+ required_rubygems_version: !ruby/object:Gem::Requirement
374
+ requirements:
375
+ - - ">"
376
+ - !ruby/object:Gem::Version
377
+ version: 1.3.1
378
+ requirements: []
379
+ rubyforge_project:
380
+ rubygems_version: 2.4.8
381
+ signing_key:
382
+ specification_version: 4
383
+ summary: Bot framework for STEEM.
384
+ test_files: []