simple_utilities 0.0.1
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 +7 -0
- data/.gitignore +2 -0
- data/.rspec +1 -0
- data/.rubocop.yml +3 -0
- data/Gemfile +3 -0
- data/README.md +20 -0
- data/lib/simple_utilities.rb +7 -0
- data/lib/simple_utilities/array.rb +12 -0
- data/lib/simple_utilities/exceptions/file_methods_exception.rb +20 -0
- data/lib/simple_utilities/file_methods.rb +28 -0
- data/lib/simple_utilities/hash.rb +39 -0
- data/lib/simple_utilities/numeric.rb +8 -0
- data/simple_utilities.gemspec +21 -0
- metadata +97 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 5b8aa2d0ca5ca55da06c52f85a64f363365b85df67e8f13aa3261214a922a398
|
4
|
+
data.tar.gz: f8ae37b6c4cd6a858adcb4fe73d9901d359724850389417264a926fd2847de69
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 1686e389fe0b9dc0a7afffe399771cbd6e055a6743d9ee69c19e8e7d32fa7cd02f1428916f14fe96a753f9ce8de066e3a5db8d880e7924365e15e8c3148a1fbf
|
7
|
+
data.tar.gz: e8f0dc12b164e2252545d0ea65bcbeb415c1314c3f84b43471b009b8c9b751f6f6ee521bf59b8ddeddbfeb990817dc41b50da66d3c4b839b8018f23e7896281a
|
data/.gitignore
ADDED
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--require spec_helper
|
data/.rubocop.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# SimpleUtilities
|
2
|
+
|
3
|
+
`simple_utilities` adds few more methods to the ruby data types by implementing monkey patching
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add to the application's Gemfile:
|
8
|
+
|
9
|
+
```ruby
|
10
|
+
gem 'simple_utilities'
|
11
|
+
```
|
12
|
+
|
13
|
+
And then execute:
|
14
|
+
```bash
|
15
|
+
$ bundle install
|
16
|
+
```
|
17
|
+
|
18
|
+
## License
|
19
|
+
|
20
|
+
All rights reserved. [SB](https://github.com/rubymaniac2012)
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Test
|
4
|
+
module SimpleUtilities
|
5
|
+
# Test
|
6
|
+
class FormatNotMatchError < StandardError
|
7
|
+
def initialize
|
8
|
+
message = 'Both files should be of same format to merge.'
|
9
|
+
super(message)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
# Test
|
14
|
+
class NoFileExistsError < StandardError
|
15
|
+
def initialize(path)
|
16
|
+
message = "No file exists for the given path: #{path}"
|
17
|
+
super(message)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
# Test
|
4
|
+
module SimpleUtilities
|
5
|
+
# Test
|
6
|
+
class FileMethods
|
7
|
+
def self.read(src_file)
|
8
|
+
# Raise error if no file exists.
|
9
|
+
# No rescue, because to test rspec when errors are raised
|
10
|
+
raise NoFileExistsError, src_file unless File.file?(src_file)
|
11
|
+
|
12
|
+
File.read(src_file)
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.merge_files(src_file, dst_file)
|
16
|
+
raise NoFileExistsError, src_file unless File.file?(src_file)
|
17
|
+
raise NoFileExistsError, dst_file unless File.file?(dst_file)
|
18
|
+
raise FormatNotMatchError unless File.extname(src_file) == File.extname(dst_file)
|
19
|
+
|
20
|
+
src_data = FileMethods.read(src_file)
|
21
|
+
File.write(dst_file, "\n#{src_data}", mode: 'a')
|
22
|
+
rescue StandardError => e
|
23
|
+
puts "Error Message: #{e.message}"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
FileMethods = SimpleUtilities::FileMethods
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/hash/indifferent_access'
|
4
|
+
# Monkey patching hash
|
5
|
+
# Adding the below methods and indifferent_access too from active_support
|
6
|
+
# with_indifferent_access:
|
7
|
+
# hash = {a: 'a', b: 'b', c: 'c'}.with_indifferent_access
|
8
|
+
# hash[:a] == hash['a']
|
9
|
+
# deep_keys:
|
10
|
+
# hash = {a: b: {c: '123'}}
|
11
|
+
# hash.deep_keys = %i[a b c]
|
12
|
+
class Hash
|
13
|
+
def deep_transform_values(&block)
|
14
|
+
transform_values do |v|
|
15
|
+
v.is_a?(Hash) ? v.deep_transform_values(&block) : yield(v)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def deep_transform_values!(&block)
|
20
|
+
each do |k, v|
|
21
|
+
self[k] = v.is_a?(Hash) ? v.deep_transform_values!(&block) : yield(v)
|
22
|
+
end
|
23
|
+
self
|
24
|
+
end
|
25
|
+
|
26
|
+
def deep_keys
|
27
|
+
reduce([]) do |memo, (k, v)|
|
28
|
+
memo << (v.is_a?(Hash) ? [k, v.deep_keys] : k)
|
29
|
+
end.flatten
|
30
|
+
end
|
31
|
+
|
32
|
+
def reject_empty
|
33
|
+
reject { |_, v| v.to_s.empty? }
|
34
|
+
end
|
35
|
+
|
36
|
+
def reject_empty!
|
37
|
+
reject! { |_, v| v.to_s.empty? }
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = 'simple_utilities'
|
5
|
+
s.version = '0.0.1'
|
6
|
+
s.summary = 'Hola!'
|
7
|
+
s.description = 'A simple utility gem'
|
8
|
+
s.authors = ['Shams Baig']
|
9
|
+
s.email = 'baig.shams@gmail.com'
|
10
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
11
|
+
f.match(%r{^(test|spec|features)/})
|
12
|
+
end
|
13
|
+
s.add_dependency 'activesupport', '6.1.3.2'
|
14
|
+
s.require_paths = ['lib']
|
15
|
+
s.homepage =
|
16
|
+
'https://github.com/rubymaniac2012'
|
17
|
+
s.license = 'SB'
|
18
|
+
|
19
|
+
s.add_development_dependency 'rspec', '3.10.0'
|
20
|
+
s.add_development_dependency 'rspec-expectations', '3.10.1'
|
21
|
+
end
|
metadata
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: simple_utilities
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Shams Baig
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-05-31 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activesupport
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 6.1.3.2
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 6.1.3.2
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.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: 3.10.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec-expectations
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 3.10.1
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 3.10.1
|
55
|
+
description: A simple utility gem
|
56
|
+
email: baig.shams@gmail.com
|
57
|
+
executables: []
|
58
|
+
extensions: []
|
59
|
+
extra_rdoc_files: []
|
60
|
+
files:
|
61
|
+
- ".gitignore"
|
62
|
+
- ".rspec"
|
63
|
+
- ".rubocop.yml"
|
64
|
+
- Gemfile
|
65
|
+
- README.md
|
66
|
+
- lib/simple_utilities.rb
|
67
|
+
- lib/simple_utilities/array.rb
|
68
|
+
- lib/simple_utilities/exceptions/file_methods_exception.rb
|
69
|
+
- lib/simple_utilities/file_methods.rb
|
70
|
+
- lib/simple_utilities/hash.rb
|
71
|
+
- lib/simple_utilities/numeric.rb
|
72
|
+
- simple_utilities.gemspec
|
73
|
+
homepage: https://github.com/rubymaniac2012
|
74
|
+
licenses:
|
75
|
+
- SB
|
76
|
+
metadata: {}
|
77
|
+
post_install_message:
|
78
|
+
rdoc_options: []
|
79
|
+
require_paths:
|
80
|
+
- lib
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - ">="
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - ">="
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
91
|
+
requirements: []
|
92
|
+
rubyforge_project:
|
93
|
+
rubygems_version: 2.7.3
|
94
|
+
signing_key:
|
95
|
+
specification_version: 4
|
96
|
+
summary: Hola!
|
97
|
+
test_files: []
|