krang 0.0.1rc1

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: 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: []