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 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
@@ -0,0 +1,2 @@
1
+ tmp
2
+ Gemfile.lock
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --require spec_helper
data/.rubocop.yml ADDED
@@ -0,0 +1,3 @@
1
+ Metrics/BlockLength:
2
+ Exclude:
3
+ - 'spec/*.rb'
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
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,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'simple_utilities/array'
4
+ require 'simple_utilities/numeric'
5
+ require 'simple_utilities/hash'
6
+ require 'simple_utilities/file_methods'
7
+ require 'simple_utilities/exceptions/file_methods_exception'
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Test
4
+ class Array
5
+ def reject_empty
6
+ reject { |v| v.to_s.empty? }
7
+ end
8
+
9
+ def reject_empty!
10
+ reject! { |v| v.to_s.empty? }
11
+ end
12
+ end
@@ -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,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Test
4
+ class Numeric
5
+ def to_currency(precision = 2)
6
+ format("%.#{precision}f", self)
7
+ end
8
+ 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: []