arbitrium 0.2.1 → 1.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 +4 -4
- data/README.md +52 -4
- data/arbitrium.gemspec +2 -2
- data/bin/arbitrium +20 -0
- data/bin/console +0 -7
- data/bin/setup +0 -2
- data/lib/arbitrium.rb +4 -1
- data/lib/arbitrium/file_creator.rb +92 -0
- data/lib/arbitrium/result.rb +27 -3
- data/lib/arbitrium/version.rb +1 -1
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 07f0370650dc517751f82305b914467deff9dd8b
|
4
|
+
data.tar.gz: 0c5b7f18c64daac63bea6b4f9e9290d4232883b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: faaba03ff8431e0cac29ee717b6a14ba8fe2fc8cc1ea6fe86b599f422ad737f6bef758915f6528427f9cf4e1526ee1469cfefa0529d7e19e3728bcddb53558f7
|
7
|
+
data.tar.gz: 3c1f2352b07960d6276485faecca4cc43f7c4005a9d330adcef3a5ff7f2c62aa3b7fd9863a7b627985a721497b8d748b4b40249b294d42e1c5b3848021e308c7
|
data/README.md
CHANGED
@@ -19,14 +19,62 @@ Or install it yourself as:
|
|
19
19
|
$ gem install arbitrium
|
20
20
|
|
21
21
|
## Usage
|
22
|
+
#### There are two different uses for this gem.
|
23
|
+
##### Command Line File/Class Creator
|
22
24
|
|
23
|
-
|
25
|
+
Once you have the gem installed type `bundle exec arbitrium -h` to see the different options.
|
24
26
|
|
25
|
-
|
27
|
+
Example Usage:
|
28
|
+
```
|
29
|
+
bundle exec arbitrium -f place/where/I/want/file.rb -m run -a Fake,Name
|
30
|
+
# Results in the following file being created: [link.to.file]
|
31
|
+
bundle exec arbitrium -f place/where/I/want/file.rb
|
32
|
+
# Results in the following file being created: [link.to.file]
|
33
|
+
```
|
34
|
+
|
35
|
+
When using the command line generator make sure that you are always using the path from your current position in the file structure.
|
36
|
+
|
37
|
+
##### Using Arbitrium::Result
|
38
|
+
In your method that they want to have the Result object call `Arbitrium::Result.new()` and pass in your arguments.
|
39
|
+
|
40
|
+
Important things to note:
|
41
|
+
1. You must pass at least two arguments
|
42
|
+
2. The first argument must be a boolean type
|
43
|
+
3. The second argument must be a string type
|
44
|
+
Any deviation from data types will result in an error being raised.
|
45
|
+
|
46
|
+
What a successful result may look like:
|
47
|
+
```
|
48
|
+
result = Arbitrium::Result.new(user.save, user.errors.messages.join(', '), user)
|
49
|
+
|
50
|
+
result.successful? # true
|
51
|
+
result.failed? # false
|
52
|
+
result.message # ''
|
53
|
+
result.object # User object
|
26
54
|
|
27
|
-
|
55
|
+
# You can also call the class method default_success which takes an optional object
|
56
|
+
result = Arbitrium::Result.default_success(OptionalObject)
|
28
57
|
|
29
|
-
|
58
|
+
result.successful? # true
|
59
|
+
result.message # 'Completed Succesfully.'
|
60
|
+
result.object # OptionalObject
|
61
|
+
```
|
62
|
+
|
63
|
+
What a failed result may look like:
|
64
|
+
```
|
65
|
+
result = Arbitrium::Result.new(false, 'Failed to successfully do my job')
|
66
|
+
|
67
|
+
result.successful? # false
|
68
|
+
result.message # Failed to successfully do my job
|
69
|
+
result.object # nil
|
70
|
+
|
71
|
+
# You can also call the class method default_failure which takes an optional object
|
72
|
+
result = Arbitrium::Result.default_success
|
73
|
+
|
74
|
+
result.failed? # true
|
75
|
+
result.message # 'Failed to complete.'
|
76
|
+
result.object # nil
|
77
|
+
```
|
30
78
|
|
31
79
|
## Contributing
|
32
80
|
|
data/arbitrium.gemspec
CHANGED
@@ -16,8 +16,8 @@ Gem::Specification.new do |spec|
|
|
16
16
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
17
17
|
f.match(%r{^(test|spec|features)/})
|
18
18
|
end
|
19
|
-
spec.bindir = "
|
20
|
-
spec.executables
|
19
|
+
spec.bindir = "bin"
|
20
|
+
spec.executables << 'arbitrium'
|
21
21
|
spec.require_paths = ["lib"]
|
22
22
|
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.14"
|
data/bin/arbitrium
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require_relative '../lib/arbitrium'
|
3
|
+
require_relative '../lib/arbitrium/file_creator'
|
4
|
+
require 'optparse'
|
5
|
+
|
6
|
+
options = { pwd: Dir.pwd, file: nil, method_name: 'perform', module_array: [] }
|
7
|
+
|
8
|
+
parser =
|
9
|
+
OptionParser.new do |opts|
|
10
|
+
opts.banner = "Usage: arbitrium [options]"
|
11
|
+
opts.on('-fMANDATORY', '--file=MANDATORY', 'File with path from current directory') { |file| options[:file] = file }
|
12
|
+
opts.on('-m', '--method=OPTIONAL', 'Name of actionable method') { |method| options[:method_name] = method }
|
13
|
+
opts.on('-a', '--module_array=OPTIONAL', 'Modules that the class is nested under seperated by a comma') { |module_array| options[:module_array] = module_array.split(',').map(&:strip) }
|
14
|
+
opts.on('-h', '--help') { puts opts; exit }
|
15
|
+
end
|
16
|
+
|
17
|
+
args = parser.order!(ARGV) {}
|
18
|
+
parser.parse!(args)
|
19
|
+
|
20
|
+
Arbitrium::FileCreator.perform(options)
|
data/bin/console
CHANGED
@@ -3,12 +3,5 @@
|
|
3
3
|
require "bundler/setup"
|
4
4
|
require "arbitrium"
|
5
5
|
|
6
|
-
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
-
# with your gem easier. You can also use a different console, if you like.
|
8
|
-
|
9
|
-
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
-
# require "pry"
|
11
|
-
# Pry.start
|
12
|
-
|
13
6
|
require "irb"
|
14
7
|
IRB.start(__FILE__)
|
data/bin/setup
CHANGED
data/lib/arbitrium.rb
CHANGED
@@ -0,0 +1,92 @@
|
|
1
|
+
module Arbitrium
|
2
|
+
class FileCreator
|
3
|
+
attr_reader :file_with_path, :method_name, :pwd, :module_array
|
4
|
+
|
5
|
+
def self.perform(options)
|
6
|
+
new(options).perform
|
7
|
+
end
|
8
|
+
|
9
|
+
options = { pwd: Dir.pwd, file: nil, method_name: 'perform', module_array: [] }
|
10
|
+
|
11
|
+
|
12
|
+
def initialize(options)
|
13
|
+
puts options
|
14
|
+
@file_with_path = options[:file]
|
15
|
+
@method_name = options[:method_name]
|
16
|
+
@pwd = options[:pwd]
|
17
|
+
@module_array = options[:module_array]
|
18
|
+
end
|
19
|
+
|
20
|
+
def perform
|
21
|
+
puts module_array
|
22
|
+
puts create_file ? "Successfully created file in #{full_path_with_file}" : "Failed to create file!"
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def create_file
|
28
|
+
File.open(full_path_with_file, 'w') do |file|
|
29
|
+
file.write(<<~EOF
|
30
|
+
#{file_header}
|
31
|
+
#{add_spaces} def self.#{method_name}()
|
32
|
+
#{add_spaces} new().#{method_name}
|
33
|
+
#{add_spaces} end
|
34
|
+
|
35
|
+
#{add_spaces} def initialize()
|
36
|
+
#{add_spaces} # insert instance variables here
|
37
|
+
#{add_spaces} end
|
38
|
+
|
39
|
+
#{add_spaces} def #{method_name}
|
40
|
+
#{add_spaces} # define tasks needed to complete here
|
41
|
+
#{add_spaces} # next, define result of tasks
|
42
|
+
#{add_spaces} Arbitrium::Result.new()
|
43
|
+
#{add_spaces} end
|
44
|
+
|
45
|
+
#{add_spaces} private
|
46
|
+
#{add_spaces} # define methods from perform here
|
47
|
+
#{file_footer}
|
48
|
+
end
|
49
|
+
EOF
|
50
|
+
)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def full_path_with_file
|
55
|
+
pwd + modified_file_with_path
|
56
|
+
end
|
57
|
+
|
58
|
+
def modified_file_with_path
|
59
|
+
return if file_with_path[0] == '/'
|
60
|
+
|
61
|
+
'/' + file_with_path
|
62
|
+
end
|
63
|
+
|
64
|
+
def file_header
|
65
|
+
"#{module_header}\n#{class_header}"
|
66
|
+
end
|
67
|
+
|
68
|
+
def module_header
|
69
|
+
module_array.map.with_index { |module_name, i| "#{add_spaces(i)}module #{module_name}" }.join("\n")
|
70
|
+
end
|
71
|
+
|
72
|
+
def class_header
|
73
|
+
module_array.empty? ? "class #{class_name}" : "\n#{add_spaces(module_array.length)} class #{class_name}"
|
74
|
+
end
|
75
|
+
|
76
|
+
def add_spaces(value = module_array.length)
|
77
|
+
' ' * value
|
78
|
+
end
|
79
|
+
|
80
|
+
def class_name
|
81
|
+
class_portion_of_path.split('_').map(&:capitalize).join('')
|
82
|
+
end
|
83
|
+
|
84
|
+
def class_portion_of_path
|
85
|
+
file_with_path[0...file_with_path.length-3].match(/([^\/]+)$/)[0]
|
86
|
+
end
|
87
|
+
|
88
|
+
def file_footer
|
89
|
+
module_array.map.with_index { |_, i| puts i; "#{add_spaces((module_array.length - i))}end" }.join("\n")
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
data/lib/arbitrium/result.rb
CHANGED
@@ -6,18 +6,42 @@ module Arbitrium
|
|
6
6
|
new(true, 'Completed successfully.', object)
|
7
7
|
end
|
8
8
|
|
9
|
+
def self.default_failure(object = nil)
|
10
|
+
new(false, 'Failed to complete.', object)
|
11
|
+
end
|
12
|
+
|
9
13
|
def initialize(success, message, object = nil)
|
10
14
|
@success = success
|
11
15
|
@message = message
|
12
16
|
@object = object
|
17
|
+
|
18
|
+
raise 'Error! Incorrect data types for arguments expected (boolean, string, object)!' unless valid?
|
13
19
|
end
|
14
20
|
|
15
|
-
def
|
21
|
+
def successful?
|
16
22
|
self.success
|
17
23
|
end
|
18
24
|
|
19
|
-
def
|
20
|
-
!
|
25
|
+
def failed?
|
26
|
+
!successful?
|
27
|
+
end
|
28
|
+
|
29
|
+
def valid?
|
30
|
+
check_validity
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def check_validity
|
36
|
+
check_success_class && check_message_class
|
37
|
+
end
|
38
|
+
|
39
|
+
def check_success_class
|
40
|
+
success.is_a?(TrueClass) || success.is_a?(FalseClass)
|
41
|
+
end
|
42
|
+
|
43
|
+
def check_message_class
|
44
|
+
message.is_a?(String)
|
21
45
|
end
|
22
46
|
end
|
23
47
|
end
|
data/lib/arbitrium/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: arbitrium
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Lollar
|
8
8
|
autorequire:
|
9
|
-
bindir:
|
9
|
+
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,7 +58,8 @@ description: This gem was inspired by the overabundance of logic that I continua
|
|
58
58
|
in scope and will be modeled after the way that I like to write service object classes.
|
59
59
|
email:
|
60
60
|
- lollar.mchl@gmail.com
|
61
|
-
executables:
|
61
|
+
executables:
|
62
|
+
- arbitrium
|
62
63
|
extensions: []
|
63
64
|
extra_rdoc_files: []
|
64
65
|
files:
|
@@ -69,9 +70,11 @@ files:
|
|
69
70
|
- README.md
|
70
71
|
- Rakefile
|
71
72
|
- arbitrium.gemspec
|
73
|
+
- bin/arbitrium
|
72
74
|
- bin/console
|
73
75
|
- bin/setup
|
74
76
|
- lib/arbitrium.rb
|
77
|
+
- lib/arbitrium/file_creator.rb
|
75
78
|
- lib/arbitrium/result.rb
|
76
79
|
- lib/arbitrium/version.rb
|
77
80
|
homepage: https://github.com/lollar/arbitrium
|