heresy 4.0.0 → 5.0.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 292e8b2bde407d4605dd673be11ae6dd23b06703
4
- data.tar.gz: e4fa99004d6aff1f8d316bd380633da6db32f651
2
+ SHA256:
3
+ metadata.gz: b82c3c60526e9d01013a472d98d446441c77e67f967b8e69395f400f68025141
4
+ data.tar.gz: 50b7c8ddd95db6d6916b4685eef672c7ee7ff61d96778bbd84060105e64bc26a
5
5
  SHA512:
6
- metadata.gz: fd250b8b8b6f52c51a10c097d0b787a58c3ac73c86a03878169fa1b29ea22b0e2a3d1dd0cc732d99386f3db64afedb85047de2705e323c191a5995c6fb716933
7
- data.tar.gz: a66cf6ce9dac3d9cecfc21926ce0716474574a2100cd721676465338215d4ad23650f4ea333db36035e8d62c98f56e5bbaca09da0cb8dac90330206552390c07
6
+ metadata.gz: 9e25f8a810eb00ffa2336471700b74a4ed950502fae05dbe3ed263533628c3c4bbe1f35ea906048ad1678d1e6bcf3cd099d33598ff824c40f5b4330e6d7fba8c
7
+ data.tar.gz: '08a50c39cd6ad24279d8cb63a0994ec7c37f1d43bdb46b881f73fc8c197e52984d6230b57d9977e9afffc6b6cce7abf55717cabdad539879605cf4b0f530474f'
data/.gitignore CHANGED
File without changes
data/.rspec CHANGED
File without changes
File without changes
File without changes
data/Gemfile CHANGED
File without changes
data/README.md CHANGED
@@ -1,7 +1,10 @@
1
1
  # Heresy
2
2
 
3
- An alternative standard library for Ruby. It's not _avoiding_ compatability,
4
- but it's not really aiming for it, either.
3
+ Adds all sorts of things to Ruby that are basically blasphemy.
4
+
5
+ You may also be interested in
6
+ [Net::Socket](https://github.com/duckinator/net-socket), which provides
7
+ an improved socket API.
5
8
 
6
9
  ## Installation
7
10
 
@@ -21,19 +24,53 @@ Or install it yourself as:
21
24
 
22
25
  ## Usage
23
26
 
24
- ### String
25
-
26
- #### String#format
27
+ ### String#format
27
28
 
28
29
  ```ruby
29
30
  "{2} {1} {foo} {bar}".format('1', '2', foo: 'foo', 'bar' => 'bar')
30
31
  # => "2 1 foo bar"
31
32
  ```
32
33
 
33
- #### Net::Socket
34
+ ### Default
35
+
36
+ ```ruby
37
+ def foo(bar = default)
38
+ bar = "default value for bar" if bar.default?
39
+
40
+ bar
41
+ end
42
+
43
+ foo #=> "default value for bar"
44
+ foo(1) #=> 1
45
+ foo(nil) #=> nil
46
+ ```
47
+
48
+ ### Scoped Accessors
49
+
50
+ Instead of:
51
+
52
+ ```ruby
53
+ attr_accessor :foo, :bar, :baz
54
+ protected :foo, :bar, :baz
55
+
56
+ attr_reader :foo2, :bar2, :baz2
57
+ protected :foo2, :bar2, :baz2
58
+
59
+ attr_writer :foo3, :bar3, :baz3
60
+ protected :foo3, :bar3, :baz3
61
+ ```
62
+
63
+ you can do:
34
64
 
35
- [Net::Socket provides an alternative Socket API for
36
- Ruby.](https://github.com/ruby-heresy/net-socket)
65
+ ```ruby
66
+ require 'scoped_accessors'
67
+
68
+ protected accessor(:foo, :bar, :baz)
69
+ protected reader(:foo2, :bar2, :baz2)
70
+ protected writer(:foo3, :bar3, :baz3)
71
+ ```
72
+
73
+ And ditto for `private` and `public`.
37
74
 
38
75
  ## Development
39
76
 
@@ -43,5 +80,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
43
80
 
44
81
  ## Contributing
45
82
 
46
- Bug reports and pull requests are welcome on GitHub at https://github.com/[USERNAME]/heresy.
47
-
83
+ Bug reports and pull requests are welcome on GitHub at https://github.com/duckinator/heresy.
data/Rakefile CHANGED
@@ -1,6 +1,12 @@
1
1
  require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
2
+ require "rake/testtask"
3
3
 
4
- RSpec::Core::RakeTask.new(:spec)
4
+ Rake::TestTask.new do |t|
5
+ %w[lib spec].each do |dir|
6
+ t.libs.push File.join(File.dirname(__FILE__), dir)
7
+ end
5
8
 
6
- task :default => :spec
9
+ t.pattern = "spec/**/*_spec.rb"
10
+ end
11
+ task :spec => [:test] # Because theres no way in hell I'll remember.
12
+ task :default => [:test]
@@ -9,29 +9,21 @@ Gem::Specification.new do |spec|
9
9
  spec.authors = ["Ellen Marie Dash"]
10
10
  spec.email = ["me@duckie.co"]
11
11
 
12
- spec.summary = %q{An alternative standard library with no intent of compatibility.}
12
+ spec.summary = %q{Bringing heretical technology to a Ruby near you!}
13
13
  spec.description = spec.summary
14
- spec.homepage = "https://github.com/ruby-heresy"
14
+ spec.homepage = "https://github.com/duckinator/heresy"
15
15
 
16
16
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
17
  spec.bindir = "exe"
18
18
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_development_dependency "bundler", "~> 1.11"
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec", "~> 3.0"
24
-
25
- # Core class improvements.
26
- spec.add_runtime_dependency "heresy-string", "~> 1.0.0"
27
-
28
21
  # Miscellaneous things.
29
22
  # NOTE: from relies indirectly on debug_inspector (via wot-utilities),
30
23
  # which can't be installed inside of Bash on Windows. :(
31
24
  #spec.add_runtime_dependency "from", "~> 1.0.0"
32
- spec.add_runtime_dependency "default", "~> 1.0.0"
33
25
 
34
- # Net
35
- spec.add_runtime_dependency "net-socket", "~> 1.0.0"
36
- #spec.add_runtime_dependency "heresy-net-http", "~> 1.0.0"
26
+ spec.add_development_dependency "bundler", "~> 1.16"
27
+ spec.add_development_dependency "rake", "~> 12.3"
28
+ spec.add_development_dependency "minitest", "~> 5.10"
37
29
  end
File without changes
@@ -0,0 +1,4 @@
1
+ require "heresy"
2
+ require "heresy/default"
3
+ require "heresy/scoped_accessors"
4
+ require "heresy/string"
@@ -0,0 +1,22 @@
1
+ require "heresy/version"
2
+
3
+ module Heresy::DefaultValue
4
+ def self.nil?
5
+ true
6
+ end
7
+
8
+ def self.inspect
9
+ "default"
10
+ end
11
+ end
12
+
13
+ module Kernel
14
+ def default
15
+ Heresy::DefaultValue
16
+ end
17
+
18
+ def default?
19
+ self == default
20
+ end
21
+ end
22
+
@@ -0,0 +1,44 @@
1
+ require "heresy/version"
2
+
3
+ class Object
4
+ class << self
5
+ def public(*args)
6
+ super(*normalize_args(*args))
7
+ end
8
+
9
+ def private(*args)
10
+ super(*normalize_args(*args))
11
+ end
12
+
13
+ def protected(*args)
14
+ super(*normalize_args(*args))
15
+ end
16
+
17
+ def normalize_args(*args)
18
+ # Allow passing in an Array of method names.
19
+ args = args.first if args.length == 1 && args.first.is_a?(Array)
20
+
21
+ args
22
+ end
23
+
24
+ # +accessor+, +reader+, and +writer+ are equivalent to +attr_accessor+,
25
+ # +attr_reader+, and +attr_writer+, except they return the arguments passed
26
+ # to them, allowing chaining with public, private, and protected.
27
+
28
+ def accessor(*args)
29
+ attr_accessor(*args)
30
+ args
31
+ end
32
+
33
+ def reader(*args)
34
+ attr_reader(*args)
35
+ args
36
+ end
37
+
38
+ def writer(*args)
39
+ attr_writer(*args)
40
+ args
41
+ end
42
+
43
+ end
44
+ end
@@ -0,0 +1,21 @@
1
+ require "heresy/version"
2
+
3
+ class String
4
+ if method_defined?("format")
5
+ raise RuntimeError, "Required heresy/string, but String#format() is already defined!"
6
+ end
7
+
8
+ ##
9
+ # String format.
10
+ #
11
+ # +"{2} {1} {foo} {bar}".format('1', '2', foo: 'foo', 'bar' => 'bar')+
12
+ # becomes +"2 1 foo bar"+.
13
+ def format(*args)
14
+ hsh = args.last.is_a?(Hash) ? args.last : {}
15
+
16
+ self.clone.gsub(/{(\S)}/) do
17
+ hsh[$1] || hsh[$1.to_sym] || args[$1.to_i]
18
+ end
19
+ end
20
+ end
21
+
@@ -1,3 +1,3 @@
1
1
  module Heresy
2
- VERSION = "4.0.0"
2
+ VERSION = "5.0.0"
3
3
  end
File without changes
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: heresy
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 5.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ellen Marie Dash
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-08-06 00:00:00.000000000 Z
11
+ date: 2017-11-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -16,85 +16,43 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '1.11'
19
+ version: '1.16'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '1.11'
26
+ version: '1.16'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: rake
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '12.3'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '12.3'
41
41
  - !ruby/object:Gem::Dependency
42
- name: rspec
42
+ name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '5.10'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
55
- - !ruby/object:Gem::Dependency
56
- name: heresy-string
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: 1.0.0
62
- type: :runtime
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: 1.0.0
69
- - !ruby/object:Gem::Dependency
70
- name: default
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: 1.0.0
76
- type: :runtime
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: 1.0.0
83
- - !ruby/object:Gem::Dependency
84
- name: net-socket
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: 1.0.0
90
- type: :runtime
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: 1.0.0
97
- description: An alternative standard library with no intent of compatibility.
54
+ version: '5.10'
55
+ description: Bringing heretical technology to a Ruby near you!
98
56
  email:
99
57
  - me@duckie.co
100
58
  executables: []
@@ -112,9 +70,13 @@ files:
112
70
  - bin/setup
113
71
  - heresy.gemspec
114
72
  - lib/heresy.rb
73
+ - lib/heresy/all.rb
74
+ - lib/heresy/default.rb
75
+ - lib/heresy/scoped_accessors.rb
76
+ - lib/heresy/string.rb
115
77
  - lib/heresy/version.rb
116
78
  - notes.markdown
117
- homepage: https://github.com/ruby-heresy
79
+ homepage: https://github.com/duckinator/heresy
118
80
  licenses: []
119
81
  metadata: {}
120
82
  post_install_message:
@@ -133,8 +95,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
133
95
  version: '0'
134
96
  requirements: []
135
97
  rubyforge_project:
136
- rubygems_version: 2.5.1
98
+ rubygems_version: 2.7.2
137
99
  signing_key:
138
100
  specification_version: 4
139
- summary: An alternative standard library with no intent of compatibility.
101
+ summary: Bringing heretical technology to a Ruby near you!
140
102
  test_files: []