dizby 1.4.0 → 1.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (76) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +8 -2
  3. data/.travis.yml +24 -0
  4. data/.yardopts +3 -2
  5. data/Gemfile +20 -1
  6. data/LICENSE.md +357 -0
  7. data/Rakefile +6 -28
  8. data/dizby.gemspec +6 -10
  9. data/gemfiles/Gemfile.ci +12 -0
  10. data/gemfiles/Gemfile.doc +12 -0
  11. data/lib/dizby/access/control_list.rb +4 -0
  12. data/lib/dizby/access/entry.rb +4 -0
  13. data/lib/dizby/access/insecure.rb +5 -1
  14. data/lib/dizby/access/list.rb +4 -0
  15. data/lib/dizby/converter/simple.rb +4 -0
  16. data/lib/dizby/converter/timed.rb +4 -0
  17. data/lib/dizby/distributed/array.rb +17 -9
  18. data/lib/dizby/distributed/object.rb +4 -0
  19. data/lib/dizby/distributed/proxy.rb +10 -9
  20. data/lib/dizby/distributed/semi_proxy.rb +4 -0
  21. data/lib/dizby/distributed/undumpable.rb +4 -0
  22. data/lib/dizby/distributed/unknown.rb +11 -8
  23. data/lib/dizby/error.rb +4 -0
  24. data/lib/dizby/protocol/basic.rb +4 -0
  25. data/lib/dizby/protocol/manager.rb +4 -0
  26. data/lib/dizby/protocol/refined.rb +5 -1
  27. data/lib/dizby/protocols/dead.rb +4 -0
  28. data/lib/dizby/protocols/secure.rb +4 -0
  29. data/lib/dizby/protocols/tcp.rb +4 -0
  30. data/lib/dizby/protocols/unix.rb +4 -0
  31. data/lib/dizby/server/abstract.rb +5 -1
  32. data/lib/dizby/server/basic.rb +4 -0
  33. data/lib/dizby/server/registration.rb +4 -0
  34. data/lib/dizby/service.rb +5 -1
  35. data/lib/dizby/stream/client.rb +5 -1
  36. data/lib/dizby/stream/connection.rb +5 -1
  37. data/lib/dizby/stream/messenger.rb +4 -0
  38. data/lib/dizby/stream/query_ref.rb +4 -0
  39. data/lib/dizby/stream/readable.rb +4 -0
  40. data/lib/dizby/stream/writable.rb +4 -0
  41. data/lib/dizby/tunnel/abstract.rb +9 -4
  42. data/lib/dizby/tunnel/basic.rb +4 -0
  43. data/lib/dizby/tunnel/basic_spawn.rb +11 -6
  44. data/lib/dizby/tunnel/bidirectional_strategy.rb +4 -0
  45. data/lib/dizby/tunnel/factory.rb +4 -0
  46. data/lib/dizby/tunnel/local_strategy.rb +4 -0
  47. data/lib/dizby/tunnel/spawn_command.rb +7 -2
  48. data/lib/dizby/tunnel/spawned.rb +4 -0
  49. data/lib/dizby/tunnel/tunnelable_local.rb +4 -0
  50. data/lib/dizby/tunnel/tunnelable_remote.rb +4 -0
  51. data/lib/dizby/utility/classic_access.rb +4 -0
  52. data/lib/dizby/utility/configurable.rb +4 -0
  53. data/lib/dizby/utility/delegator.rb +4 -0
  54. data/lib/dizby/utility/force_bind.rb +6 -0
  55. data/lib/dizby/utility/io_barrier.rb +4 -0
  56. data/lib/dizby/utility/log.rb +17 -10
  57. data/lib/dizby/utility/monitor.rb +4 -0
  58. data/lib/dizby/utility/polymorphic_delegated.rb +4 -0
  59. data/lib/dizby/utility/self_pipe.rb +12 -7
  60. data/lib/dizby/utility/semi_built.rb +4 -0
  61. data/lib/dizby/utility/string.rb +4 -0
  62. data/lib/dizby/utility/timed_collection.rb +4 -0
  63. data/lib/dizby/utility/timed_state.rb +4 -0
  64. data/lib/dizby/version.rb +5 -1
  65. data/lib/dizby/worker/connection.rb +4 -0
  66. data/lib/dizby/worker/invoke_method.rb +4 -0
  67. data/lib/dizby/worker/server.rb +4 -0
  68. data/lib/dizby.rb +4 -0
  69. data/tasks/ghpages.rake +30 -0
  70. data/tasks/rubocop.rake +14 -0
  71. data/tasks/test.rake +25 -0
  72. data/tasks/yard.rake +13 -0
  73. data/test/test_helper.rb +4 -0
  74. metadata +12 -104
  75. data/.yardext/config_access_handler.rb +0 -84
  76. data/LICENSE +0 -24
@@ -1,25 +1,32 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'logger'
5
9
 
6
10
  module Dizby
7
- def self.create_logger(output: $stderr, level: Logger::ERROR, &transformer)
8
- log = Logger.new(output)
11
+ class Logger < ::Logger
12
+ def initialize(output: $stderr, level: Logger::ERROR, &transformer)
13
+ super(output)
9
14
 
10
- default_formatter = Logger::Formatter.new
11
- log.formatter = proc do |severity, datetime, progname, msg|
12
- msg = transformer.call(msg) if transformer
13
- default_formatter.call(severity, datetime, progname, msg)
15
+ self.formatter = self.class.transform_formatter(&transformer)
16
+ self.level = level
14
17
  end
15
18
 
16
- log.level = level
17
-
18
- log.define_singleton_method(:backtrace) do |exception|
19
+ def backtrace(exception)
19
20
  error(exception.inspect)
20
21
  exception.backtrace.each { |trace| error(trace) }
21
22
  end
22
23
 
23
- log
24
+ def self.transform_formatter(&transformer)
25
+ default_formatter = Logger::Formatter.new
26
+ proc do |severity, datetime, progname, msg|
27
+ msg = transformer.call(msg) if transformer
28
+ default_formatter.call(severity, datetime, progname, msg)
29
+ end
30
+ end
24
31
  end
25
32
  end
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'monitor'
5
9
 
6
10
  module Dizby
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/utility/classic_access'
5
9
  require 'dizby/utility/delegator'
6
10
  require 'dizby/utility/force_bind'
@@ -1,14 +1,19 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  module Dizby
5
- SelfPipe = Struct.new(:read, :write) do
6
- def close_read
7
- read.close if read && !read.closed?
8
- end
9
+ SelfPipe =
10
+ Struct.new(:read, :write) do
11
+ def close_read
12
+ read.close if read && !read.closed?
13
+ end
9
14
 
10
- def close_write
11
- write.close if write && !write.closed?
15
+ def close_write
16
+ write.close if write && !write.closed?
17
+ end
12
18
  end
13
- end
14
19
  end
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  module Dizby
5
9
  class SemibuiltObject
6
10
  def initialize(klass, *args)
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  module Dizby
5
9
  def self.any_to_s(obj)
6
10
  "#{obj}:#{obj.class}"
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/utility/monitor'
5
9
  require 'dizby/utility/timed_state'
6
10
 
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  module Dizby
5
9
  class TimedState
6
10
  def initialize(timeout)
data/lib/dizby/version.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  module Dizby
5
- VERSION = '1.4.0'
9
+ VERSION = '1.5.0'.freeze
6
10
  end
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/worker/invoke_method'
5
9
 
6
10
  module Dizby
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/distributed/array'
5
9
 
6
10
  module Dizby
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/worker/connection'
5
9
 
6
10
  module Dizby
data/lib/dizby.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'dizby/version'
5
9
 
6
10
  require 'dizby/service'
@@ -0,0 +1,30 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ if ENV['TRAVIS'] && ENV['DOCS']
9
+ namespace :yard do
10
+ if ENV['TRAVIS_PULL_REQUEST'] == 'false'
11
+ require 'ghpages_deploy/rake_task'
12
+
13
+ desc 'Deploy documentation to Github Pages'
14
+ GithubPages::DeployTask.new(deploy: [:yard]) do |t|
15
+ t.remote = 'origin'
16
+ t.source = '_yardoc'
17
+
18
+ branch = ENV['TRAVIS_BRANCH']
19
+ t.register "doc/branch/#{branch}" unless branch.empty?
20
+
21
+ tag = ENV['TRAVIS_TAG']
22
+ t.register "doc/tag/#{tag}" unless tag.empty?
23
+ end
24
+ else
25
+ task :deploy do
26
+ puts 'Documentation not generated for pull requests.'
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ require 'rubocop/rake_task'
9
+
10
+ RuboCop::RakeTask.new(:rubocop) do |t|
11
+ t.fail_on_error = false
12
+ end
13
+
14
+ task('rubocop:auto_correct').clear
data/tasks/test.rake ADDED
@@ -0,0 +1,25 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ require 'rake/testtask'
9
+
10
+ Rake::TestTask.new(:test) do |t|
11
+ t.libs << 'test'
12
+ t.test_files = ['test/test_helper.rb']
13
+ t.pattern = 'test/**/*_test.rb'
14
+ t.verbose = true
15
+ end
16
+
17
+ namespace :test do
18
+ desc 'Generate a test coverage report'
19
+ task :coverage do
20
+ ENV['COVERAGE'] = 'true'
21
+ task(:test).invoke
22
+ end
23
+ end
24
+
25
+ CLOBBER.include 'coverage'
data/tasks/yard.rake ADDED
@@ -0,0 +1,13 @@
1
+ # encoding: utf-8
2
+ # Copyright (c) 2016 Nathan Currier
3
+
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
8
+ require 'yard_dizby/rake_overload'
9
+
10
+ YARD::Rake::YardocTask.new(:yard)
11
+
12
+ CLEAN.include '.yardoc'
13
+ CLOBBER.include '_yardoc'
data/test/test_helper.rb CHANGED
@@ -1,6 +1,10 @@
1
1
  # encoding: utf-8
2
2
  # Copyright (c) 2016 Nathan Currier
3
3
 
4
+ # This Source Code Form is subject to the terms of the Mozilla Public
5
+ # License, v. 2.0. If a copy of the MPL was not distributed with this
6
+ # file, You can obtain one at http://mozilla.org/MPL/2.0/.
7
+
4
8
  require 'minitest/autorun'
5
9
 
6
10
  if ENV['COVERAGE']
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dizby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nathan Currier
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-02 00:00:00.000000000 Z
11
+ date: 2016-01-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  type: :runtime
@@ -38,104 +38,6 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 1.11.2
41
- - !ruby/object:Gem::Dependency
42
- type: :development
43
- name: rubocop
44
- prerelease: false
45
- requirement: !ruby/object:Gem::Requirement
46
- requirements:
47
- - - ">="
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- type: :development
57
- name: yard
58
- prerelease: false
59
- requirement: !ruby/object:Gem::Requirement
60
- requirements:
61
- - - ">="
62
- - !ruby/object:Gem::Version
63
- version: '0'
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- type: :development
71
- name: kramdown
72
- prerelease: false
73
- requirement: !ruby/object:Gem::Requirement
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- version: '0'
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- type: :development
85
- name: rake
86
- prerelease: false
87
- requirement: !ruby/object:Gem::Requirement
88
- requirements:
89
- - - ">="
90
- - !ruby/object:Gem::Version
91
- version: '0'
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- type: :development
99
- name: minitest
100
- prerelease: false
101
- requirement: !ruby/object:Gem::Requirement
102
- requirements:
103
- - - ">="
104
- - !ruby/object:Gem::Version
105
- version: '0'
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
112
- type: :development
113
- name: simplecov
114
- prerelease: false
115
- requirement: !ruby/object:Gem::Requirement
116
- requirements:
117
- - - ">="
118
- - !ruby/object:Gem::Version
119
- version: '0'
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - ">="
123
- - !ruby/object:Gem::Version
124
- version: '0'
125
- - !ruby/object:Gem::Dependency
126
- type: :development
127
- name: codecov
128
- prerelease: false
129
- requirement: !ruby/object:Gem::Requirement
130
- requirements:
131
- - - ">="
132
- - !ruby/object:Gem::Version
133
- version: '0'
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - ">="
137
- - !ruby/object:Gem::Version
138
- version: '0'
139
41
  description: Distributed Ruby
140
42
  email:
141
43
  - nathan.currier@gmail.com
@@ -145,12 +47,14 @@ extra_rdoc_files: []
145
47
  files:
146
48
  - ".gitignore"
147
49
  - ".rubocop.yml"
148
- - ".yardext/config_access_handler.rb"
50
+ - ".travis.yml"
149
51
  - ".yardopts"
150
52
  - Gemfile
151
- - LICENSE
53
+ - LICENSE.md
152
54
  - Rakefile
153
55
  - dizby.gemspec
56
+ - gemfiles/Gemfile.ci
57
+ - gemfiles/Gemfile.doc
154
58
  - lib/dizby.rb
155
59
  - lib/dizby/access/control_list.rb
156
60
  - lib/dizby/access/entry.rb
@@ -209,10 +113,14 @@ files:
209
113
  - lib/dizby/worker/connection.rb
210
114
  - lib/dizby/worker/invoke_method.rb
211
115
  - lib/dizby/worker/server.rb
116
+ - tasks/ghpages.rake
117
+ - tasks/rubocop.rake
118
+ - tasks/test.rake
119
+ - tasks/yard.rake
212
120
  - test/test_helper.rb
213
- homepage: https://gem.rideliner.net
121
+ homepage: https://github.com/rideliner/dizby
214
122
  licenses:
215
- - BSD-3-Clause
123
+ - MPL-2.0
216
124
  metadata: {}
217
125
  post_install_message:
218
126
  rdoc_options: []
@@ -1,84 +0,0 @@
1
- # encoding: utf-8
2
- # Copyright (c) 2016 Nathan Currier
3
-
4
- class ConfigAccessHandler < YARD::Handlers::Ruby::AttributeHandler
5
- handles method_call(:config_reader)
6
- handles method_call(:config_writer)
7
- handles method_call(:config_accessor)
8
- namespace_only
9
-
10
- def access_permissions
11
- case statement.method_name(true)
12
- when :config_reader
13
- [true, true]
14
- when :config_writer
15
- [false, true]
16
- when :config_accessor
17
- [true, true]
18
- else
19
- [false, false]
20
- end
21
- end
22
-
23
- def process_impl(method, permission)
24
- if permission
25
- obj = MethodObject.new(namespace, method, scope)
26
- yield obj
27
-
28
- register(obj)
29
- obj
30
- else
31
- namespace.children.find do |o|
32
- o.name == method.to_sym && o.scope == scope
33
- end
34
- end
35
- end
36
-
37
- def store_obj(type, name, obj)
38
- namespace.attributes[scope][name][type] = obj if obj
39
- end
40
-
41
- def process_reader(attribute, permission)
42
- final = process_impl(attribute, permission) do |obj|
43
- obj.signature ||= "def #{attribute}"
44
- obj.source = "#{obj.signature}\n @config[:#{attribute}]\nend"
45
- if obj.docstring.blank?(false)
46
- obj.docstring =
47
- "Returns the value of configuration attribute #{attribute}"
48
- end
49
- end
50
-
51
- store_obj :read, attribute, final
52
- end
53
-
54
- def process_writer(attribute, permission)
55
- final = process_impl("#{attribute}=", permission) do |obj|
56
- obj.parameters = [['value', nil]]
57
- obj.signature ||= "def #{attribute}=(value)"
58
- obj.source ||= "#{obj.signature}\n @config[:#{attribute}] = value\nend"
59
- obj.docstring = <<-eos if obj.docstring.blank?(false)
60
- Sets the configuration attribute #{attribute}
61
- @param value the value to set the attribute #{attribute} to.
62
- eos
63
- end
64
-
65
- store_obj :write, attribute, final
66
- end
67
-
68
- def process_access(name, read, write)
69
- read, write = access_permissions
70
- namespace.attributes[scope][name] ||= SymbolHash[read: nil, write: nil]
71
-
72
- process_reader(name, read)
73
- process_writer(name, write)
74
- end
75
-
76
- def process
77
- return if statement.type == :var_ref || statement.type == :vcall
78
- params = statement.parameters(false).dup
79
-
80
- validated_attribute_names(params).each do |name|
81
- process_access(name, read, write)
82
- end
83
- end
84
- end
data/LICENSE DELETED
@@ -1,24 +0,0 @@
1
- Copyright (c) 2013-2016, Nathan Currier
2
- All rights reserved.
3
-
4
- Redistribution and use in source and binary forms, with or without
5
- modification, are permitted provided that the following conditions are met:
6
- * Redistributions of source code must retain the above copyright
7
- notice, this list of conditions and the following disclaimer.
8
- * Redistributions in binary form must reproduce the above copyright
9
- notice, this list of conditions and the following disclaimer in the
10
- documentation and/or other materials provided with the distribution.
11
- * Neither the name of the <organization> nor the
12
- names of its contributors may be used to endorse or promote products
13
- derived from this software without specific prior written permission.
14
-
15
- THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
16
- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
17
- WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
18
- DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
19
- DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
20
- (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
21
- LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
22
- ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23
- (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
24
- SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.