amyf 0.1.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1a5d0fa8216e89853632df3be6edc961e2a7fdaa5efe16131ba52a4f99d29d70
4
+ data.tar.gz: f387b49f17afa798643301c328bb3780c88cc403e4e7c668e9a76819394df2fc
5
+ SHA512:
6
+ metadata.gz: df0940c6975d9db15c47c91dbb1f974d279aee0b5b7942c45f451894a486059d564b47fde5ab8f5c15df9643174e0b01d462a7279bd3bdeaa3d4784c49882e9a
7
+ data.tar.gz: d40e4503382555c228670f822e6a26232af0090d94b176e718d123b00c50d0565c770446ea3549d018adea8b59d6a2daed3b394ea7185db080f475b0c25d1a1e
data/bin/amyf ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require 'amyf'
5
+ puts Amy.hello_world
data/lib/amyf.rb ADDED
@@ -0,0 +1,8 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Stops to smells the roses
4
+ module Amy
5
+ def self.hello_world
6
+ 'Hola amor!'
7
+ end
8
+ end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'rspec'
4
+ require_relative '../version_parser'
5
+
6
+ RSpec.describe VersionParser do
7
+ let(:dummy_class) { Class.new { include VersionParser } }
8
+
9
+ describe '#prerelease_version' do
10
+ it 'with major, minor, patch - it returns nil for prerelease name and version' do
11
+ result = subject.parse('1.2.3')
12
+ expect(result).to eq Version.new(1, 2, 3, nil, nil)
13
+ end
14
+
15
+ it 'with major, minor, patch, prerelease and no prerelease version - it assigns it a 0' do
16
+ result = subject.parse('99.2.3-beta')
17
+ expect(result).to eq Version.new(99, 2, 3, 'beta', 0)
18
+ end
19
+
20
+ it "with major, minor, patch, prerelease and prerelease version'" do
21
+ result = subject.parse('1.02.3-alpha.238')
22
+ expect(result).to eq Version.new(1, 2, 3, 'alpha', 238)
23
+ end
24
+
25
+ it 'with no patch version - it assign it a 0' do
26
+ result = subject.parse('1.2-rc')
27
+ expect(result).to eq Version.new(1, 2, 0, 'rc', 0)
28
+ end
29
+
30
+ it 'with no minor version - it assigns 0 to minor and patch' do
31
+ result = subject.parse('874-random')
32
+ expect(result).to eq Version.new(874, 0, 0, 'random', 0)
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ Version = Struct.new(:major, :minor, :patch, :prename, :preversion)
4
+
5
+ module VersionParser
6
+ def self.parse(version)
7
+ _ = 0
8
+
9
+ main_version, prerelease = version.split('-')
10
+
11
+ main_parts = main_version.split('.').map(&:to_i)
12
+
13
+ major = main_parts[0] || 0
14
+ minor = main_parts[1] || 0
15
+ patch = main_parts[2] || 0
16
+
17
+ return Version.new(major, minor, patch) unless prerelease
18
+
19
+ prerelease_splitted = prerelease.split('.')
20
+
21
+ prerelease_name = prerelease_splitted[0]
22
+ prerelease_version = prerelease_splitted[1].to_i || 0
23
+
24
+ Version.new(major, minor, patch, prerelease_name, prerelease_version)
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: amyf
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - fdiaz
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 2025-01-26 00:00:00.000000000 Z
11
+ dependencies: []
12
+ description: Impossible to live without it
13
+ email:
14
+ - patchdiaz@gmail.com
15
+ executables:
16
+ - amyf
17
+ extensions: []
18
+ extra_rdoc_files: []
19
+ files:
20
+ - bin/amyf
21
+ - lib/amyf.rb
22
+ - lib/specs/version_parser_spec.rb
23
+ - lib/version_parser.rb
24
+ homepage: https://twoheartedyoga.com
25
+ licenses:
26
+ - MIT
27
+ metadata: {}
28
+ rdoc_options: []
29
+ require_paths:
30
+ - lib
31
+ required_ruby_version: !ruby/object:Gem::Requirement
32
+ requirements:
33
+ - - ">="
34
+ - !ruby/object:Gem::Version
35
+ version: 3.3.0
36
+ required_rubygems_version: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ requirements: []
42
+ rubygems_version: 3.6.3
43
+ specification_version: 4
44
+ summary: Helps with daily tasks
45
+ test_files: []