fedux_org-stdlib 0.7.21 → 0.7.22
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +3 -0
- data/Gemfile +1 -1
- data/Gemfile.lock +23 -19
- data/Rakefile +16 -0
- data/config/rubocop/exclude.yml +44 -0
- data/config/rubocop/include.yml +0 -0
- data/fedux_org-stdlib.gemspec +9 -9
- data/fixtures/plugin-load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-load.gemspec +11 -11
- data/fixtures/plugin-no_load-app/fedux_org_stdlib-fixtures-plugin_manager-plugin-no_load.gemspec +11 -11
- data/lib/fedux_org_stdlib.rb +2 -1
- data/lib/fedux_org_stdlib/app_config.rb +22 -21
- data/lib/fedux_org_stdlib/colors/html_color.rb +8 -2
- data/lib/fedux_org_stdlib/command.rb +1 -0
- data/lib/fedux_org_stdlib/command/command_result.rb +1 -0
- data/lib/fedux_org_stdlib/command/run_command.rb +6 -5
- data/lib/fedux_org_stdlib/command/which.rb +17 -17
- data/lib/fedux_org_stdlib/core_ext/array/list.rb +6 -1
- data/lib/fedux_org_stdlib/core_ext/hash/list.rb +6 -1
- data/lib/fedux_org_stdlib/core_ext/hash/options.rb +1 -0
- data/lib/fedux_org_stdlib/core_ext/shellwords/clean.rb +8 -0
- data/lib/fedux_org_stdlib/core_ext/string/underline.rb +9 -1
- data/lib/fedux_org_stdlib/environment.rb +6 -4
- data/lib/fedux_org_stdlib/file_template.rb +8 -10
- data/lib/fedux_org_stdlib/filesystem.rb +30 -29
- data/lib/fedux_org_stdlib/filesystem/exceptions.rb +1 -1
- data/lib/fedux_org_stdlib/gem_plugins/exceptions.rb +1 -0
- data/lib/fedux_org_stdlib/gem_plugins/no_plugin.rb +1 -2
- data/lib/fedux_org_stdlib/gem_plugins/plugin.rb +6 -6
- data/lib/fedux_org_stdlib/gem_plugins/plugin_manager.rb +6 -7
- data/lib/fedux_org_stdlib/list.rb +24 -2
- data/lib/fedux_org_stdlib/logging.rb +3 -2
- data/lib/fedux_org_stdlib/logging/logger.rb +7 -7
- data/lib/fedux_org_stdlib/logging/severity.rb +3 -0
- data/lib/fedux_org_stdlib/logic_converters.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters/exceptions.rb +2 -2
- data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +9 -8
- data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +5 -4
- data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +3 -3
- data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +3 -3
- data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +4 -3
- data/lib/fedux_org_stdlib/models/base_model.rb +24 -25
- data/lib/fedux_org_stdlib/models/class_based_model.rb +15 -14
- data/lib/fedux_org_stdlib/models/exceptions.rb +14 -15
- data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +12 -15
- data/lib/fedux_org_stdlib/process_environment.rb +11 -1
- data/lib/fedux_org_stdlib/project.rb +0 -1
- data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +11 -10
- data/lib/fedux_org_stdlib/project/logger.rb +1 -0
- data/lib/fedux_org_stdlib/project/plan.rb +1 -1
- data/lib/fedux_org_stdlib/project/report.rb +8 -9
- data/lib/fedux_org_stdlib/rake/project.rb +4 -4
- data/lib/fedux_org_stdlib/rake/project_task.rb +2 -3
- data/lib/fedux_org_stdlib/rake/shell_task.rb +7 -7
- data/lib/fedux_org_stdlib/rake/sub_task.rb +2 -2
- data/lib/fedux_org_stdlib/rake/task.rb +7 -6
- data/lib/fedux_org_stdlib/rake/version_bump_task.rb +6 -7
- data/lib/fedux_org_stdlib/rake_tasks/console.rb +0 -1
- data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +2 -2
- data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +1 -2
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +1 -2
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/bump.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/restore.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/software_version/show.rb +2 -3
- data/lib/fedux_org_stdlib/rake_tasks/software_version/show_shortcut.rb +1 -1
- data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +0 -1
- data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +1 -1
- data/lib/fedux_org_stdlib/require_files.rb +5 -4
- data/lib/fedux_org_stdlib/roles/typable.rb +2 -3
- data/lib/fedux_org_stdlib/roles/versionable.rb +3 -2
- data/lib/fedux_org_stdlib/shell_language_detector.rb +21 -2
- data/lib/fedux_org_stdlib/shell_language_detector/language.rb +9 -1
- data/lib/fedux_org_stdlib/support_information.rb +60 -55
- data/lib/fedux_org_stdlib/template_directory.rb +8 -11
- data/lib/fedux_org_stdlib/version.rb +1 -1
- data/lib/fedux_org_stdlib/version_management/library_builder.rb +3 -2
- data/lib/fedux_org_stdlib/version_management/ruby_library.rb +2 -2
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +3 -3
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +5 -5
- data/lib/fedux_org_stdlib/version_management/software_version.rb +4 -3
- data/lib/fedux_org_stdlib/version_management/version_builder.rb +1 -0
- data/rakefiles/default.rake +16 -0
- data/script/terminal +5 -5
- data/spec/app_config_spec.rb +6 -6
- data/spec/colors/html_color_spec.rb +1 -1
- data/spec/core_ext/array/list_spec.rb +8 -8
- data/spec/core_ext/hash/options_spec.rb +17 -17
- data/spec/core_ext/shellwords/clean_spec.rb +1 -1
- data/spec/environment_spec.rb +7 -5
- data/spec/examples/models/class_based/invalid_2.rb +1 -1
- data/spec/examples/models/class_based/valid_2.rb +1 -0
- data/spec/gem_plugins/plugin_manager_spec.rb +1 -1
- data/spec/logger/logger_spec.rb +1 -1
- data/spec/models/base_model_spec.rb +22 -22
- data/spec/models/class_based_model_spec.rb +66 -66
- data/spec/models/filesystem_based_model_spec.rb +28 -28
- data/spec/project/plan_spec.rb +1 -1
- data/spec/project/report_spec.rb +2 -2
- data/spec/project/taskjuggler_spec.rb +4 -4
- data/spec/spec_helper.rb +1 -3
- data/spec/support/rspec.rb +1 -1
- data/spec/version_management/library_builder_spec.rb +2 -2
- data/spec/version_management/ruby_library_spec.rb +2 -2
- data/spec/version_management/rubygem_version_file_parser_spec.rb +8 -8
- data/spec/version_management/rubygem_version_file_spec.rb +8 -8
- data/spec/version_management/software_version_spec.rb +1 -1
- metadata +5 -2
@@ -3,7 +3,6 @@ module FeduxOrgStdlib
|
|
3
3
|
module GemPlugins
|
4
4
|
# Placeholder when no associated gem found, displays warning
|
5
5
|
class NoPlugin
|
6
|
-
|
7
6
|
private
|
8
7
|
|
9
8
|
attr_reader :name
|
@@ -19,7 +18,7 @@ module FeduxOrgStdlib
|
|
19
18
|
true
|
20
19
|
end
|
21
20
|
|
22
|
-
def method_missing(*
|
21
|
+
def method_missing(*_args)
|
23
22
|
warn "Warning: The plugin '#{name}' was not found! (no gem found)"
|
24
23
|
end
|
25
24
|
end
|
@@ -1,18 +1,19 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'fedux_org_stdlib/require_files'
|
3
3
|
require 'fedux_org_stdlib/core_ext/array/list'
|
4
|
-
require_library %w
|
4
|
+
require_library %w(active_support/core_ext/object/blank)
|
5
5
|
|
6
6
|
module FeduxOrgStdlib
|
7
7
|
module GemPlugins
|
8
|
+
# Plugin
|
8
9
|
class Plugin
|
9
10
|
include Comparable
|
10
11
|
|
11
12
|
private
|
12
13
|
|
13
14
|
attr_accessor :enabled, :active
|
14
|
-
attr_writer
|
15
|
-
attr_reader
|
15
|
+
attr_writer :gem_name
|
16
|
+
attr_reader :prefix
|
16
17
|
|
17
18
|
public
|
18
19
|
|
@@ -42,14 +43,13 @@ module FeduxOrgStdlib
|
|
42
43
|
# disabled)
|
43
44
|
# Does not reload plugin if it's already active.
|
44
45
|
def activate
|
45
|
-
|
46
46
|
variants = []
|
47
47
|
variants << gem_name
|
48
48
|
variants << gem_name.gsub(/-/, '/')
|
49
49
|
variants << prefix.source.sub(/-$/, '') if prefix
|
50
50
|
|
51
|
-
begin
|
52
|
-
|
51
|
+
begin
|
52
|
+
unless active?
|
53
53
|
begin
|
54
54
|
required_file = variants.shift
|
55
55
|
require required_file
|
@@ -63,7 +63,6 @@ module FeduxOrgStdlib
|
|
63
63
|
# YourApplication.load_plugins
|
64
64
|
#
|
65
65
|
class PluginManager
|
66
|
-
|
67
66
|
private
|
68
67
|
|
69
68
|
attr_reader :plugins, :prefix, :whitelist, :blacklist
|
@@ -99,12 +98,12 @@ module FeduxOrgStdlib
|
|
99
98
|
|
100
99
|
# Require all enabled plugins, disabled plugins are skipped.
|
101
100
|
def load_plugins
|
102
|
-
each_enabled_plugin
|
101
|
+
each_enabled_plugin(&:activate)
|
103
102
|
end
|
104
103
|
|
105
104
|
# String representation
|
106
105
|
def to_s
|
107
|
-
data = plugins.sort.
|
106
|
+
data = plugins.sort.reduce([]) { |a, e| a << { name: e.name, enabled: e.enabled?, gem_name: e.gem_name, required_file: e.required_file } }
|
108
107
|
|
109
108
|
List.new(data).to_s(
|
110
109
|
fields: [:name, :gem_name, :enabled, :required_file]
|
@@ -114,7 +113,7 @@ module FeduxOrgStdlib
|
|
114
113
|
private
|
115
114
|
|
116
115
|
def each_enabled_plugin(&block)
|
117
|
-
plugins.
|
116
|
+
plugins.select(&:enabled?).each(&block)
|
118
117
|
end
|
119
118
|
|
120
119
|
# Find all installed plugins and store them in an internal array.
|
@@ -136,12 +135,12 @@ module FeduxOrgStdlib
|
|
136
135
|
else
|
137
136
|
true
|
138
137
|
end
|
139
|
-
|
138
|
+
|
140
139
|
plgs << Plugin.new(
|
141
140
|
name,
|
142
|
-
gem_name: gem.name,
|
141
|
+
gem_name: gem.name,
|
143
142
|
enabled: enabled,
|
144
|
-
prefix: prefix
|
143
|
+
prefix: prefix
|
145
144
|
)
|
146
145
|
end
|
147
146
|
|
@@ -3,8 +3,24 @@ require 'fedux_org_stdlib/require_files'
|
|
3
3
|
require_library %w( hirb )
|
4
4
|
|
5
5
|
module FeduxOrgStdlib
|
6
|
+
# A list
|
7
|
+
#
|
8
|
+
# @example Usage
|
9
|
+
#
|
10
|
+
# data = [
|
11
|
+
# {
|
12
|
+
# item1: 'data1',
|
13
|
+
# item2: 'data2'
|
14
|
+
# },
|
15
|
+
# {
|
16
|
+
# item1: 'data1',
|
17
|
+
# item2: 'data2'
|
18
|
+
# },
|
19
|
+
# ]
|
20
|
+
#
|
21
|
+
# list = List.new(data)
|
22
|
+
# puts list
|
6
23
|
class List
|
7
|
-
|
8
24
|
private
|
9
25
|
|
10
26
|
attr_reader :data
|
@@ -16,11 +32,17 @@ module FeduxOrgStdlib
|
|
16
32
|
end
|
17
33
|
|
18
34
|
# Render data to table
|
35
|
+
#
|
36
|
+
# @param [Hash] options
|
37
|
+
# Options which are supported by Hirb
|
19
38
|
def to_s(**options)
|
20
|
-
Hirb::Helpers::Table.render data, header_filter: proc
|
39
|
+
Hirb::Helpers::Table.render data, header_filter: proc(&:humanize), **options
|
21
40
|
end
|
22
41
|
|
23
42
|
# Data as array
|
43
|
+
#
|
44
|
+
# @return [Array]
|
45
|
+
# The data as array
|
24
46
|
def to_a
|
25
47
|
Array(data)
|
26
48
|
end
|
@@ -1,12 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'fedux_org_stdlib/logging/logger'
|
3
3
|
|
4
|
+
# Main
|
4
5
|
module FeduxOrgStdlib
|
5
6
|
def self.logger
|
6
7
|
@logger ||= FeduxOrgStdlib::Logging::Logger.new
|
7
8
|
end
|
8
9
|
|
9
|
-
|
10
|
-
|
10
|
+
class << self
|
11
|
+
attr_writer :logger
|
11
12
|
end
|
12
13
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
require 'fedux_org_stdlib/require_files'
|
3
|
-
require_library %w
|
3
|
+
require_library %w(logger forwardable)
|
4
4
|
|
5
5
|
require 'fedux_org_stdlib/logging/severity'
|
6
6
|
|
7
7
|
module FeduxOrgStdlib
|
8
8
|
module Logging
|
9
|
+
# The logger
|
9
10
|
class Logger
|
10
|
-
|
11
11
|
extend ::Forwardable
|
12
12
|
def_delegators :@logger, :fatal, :warn, :debug, :info, :error, :unknown
|
13
13
|
|
@@ -17,14 +17,14 @@ module FeduxOrgStdlib
|
|
17
17
|
#
|
18
18
|
# @param [Logger] logger (::Logger.new( $stderr ))
|
19
19
|
# The logger with should be used to output data
|
20
|
-
def initialize(logger = ::Logger.new(
|
20
|
+
def initialize(logger = ::Logger.new($stderr))
|
21
21
|
@logger = logger
|
22
22
|
self.mode = :info
|
23
23
|
end
|
24
24
|
|
25
25
|
# Reset logger to ruby logger
|
26
26
|
def reset
|
27
|
-
@logger = ::Logger.new(
|
27
|
+
@logger = ::Logger.new($stderr)
|
28
28
|
end
|
29
29
|
|
30
30
|
# Change mode of logger: DEBUG, ... + Change the output format
|
@@ -52,14 +52,14 @@ module FeduxOrgStdlib
|
|
52
52
|
private
|
53
53
|
|
54
54
|
def format_debug
|
55
|
-
@logger.formatter = proc { |severity, datetime, progname
|
56
|
-
debug_msg("%s %s %s: %s\n"
|
55
|
+
@logger.formatter = proc { |severity, datetime, progname, msg|
|
56
|
+
debug_msg(format("%s %s %s: %s\n", datetime, severity, progname, msg))
|
57
57
|
}
|
58
58
|
end
|
59
59
|
|
60
60
|
def format_standard
|
61
61
|
@logger.formatter = proc { |severity, datetime, _, msg|
|
62
|
-
info_msg(
|
62
|
+
info_msg(format("%s %s: %s\n", datetime, severity, msg))
|
63
63
|
}
|
64
64
|
end
|
65
65
|
|
@@ -3,9 +3,9 @@ module FeduxOrg
|
|
3
3
|
module Stdlib
|
4
4
|
module LogicConverters
|
5
5
|
module Exceptions
|
6
|
-
#raised if invalid value was provided for conversion
|
6
|
+
# raised if invalid value was provided for conversion
|
7
7
|
class InvalidValue < Exception; end
|
8
|
-
#raised if invalid value was provided for conversion
|
8
|
+
# raised if invalid value was provided for conversion
|
9
9
|
class InvalidType < Exception; end
|
10
10
|
end
|
11
11
|
end
|
@@ -8,22 +8,23 @@ require 'fedux_org_stdlib/logic_converters/y_n_converter'
|
|
8
8
|
|
9
9
|
module FeduxOrgStdlib
|
10
10
|
module LogicConverters
|
11
|
+
# Generic converter which passes arguments to other converters, e.g.
|
12
|
+
# true/false, yes/no, on/off, y/n-converters
|
11
13
|
class LogicConverter
|
12
|
-
|
13
14
|
# @param [String, Symbol] type (true_false, yes_no, on_off)
|
14
|
-
# choose the type of converter which should be used
|
15
|
+
# choose the type of converter which should be used
|
15
16
|
def initialize(type)
|
16
17
|
@converter = case type.to_s
|
17
18
|
when 'true_false'
|
18
19
|
TrueFalseConverter.new
|
19
|
-
when 'yes_no'
|
20
|
+
when 'yes_no'
|
20
21
|
YesNoConverter.new
|
21
|
-
when 'on_off'
|
22
|
+
when 'on_off'
|
22
23
|
OnOffConverter.new
|
23
|
-
when 'y_n'
|
24
|
+
when 'y_n'
|
24
25
|
YNConverter.new
|
25
26
|
else
|
26
|
-
|
27
|
+
fail FeduxOrgStdlib::LogicConverters::Exceptions::InvalidType, "Unknown type \"#{type}\" for logic converter. Valid types are \"true_false\", \"yes_no\" or \"on_off\"."
|
27
28
|
end
|
28
29
|
end
|
29
30
|
|
@@ -31,8 +32,8 @@ module FeduxOrgStdlib
|
|
31
32
|
# the logic value which should be converted
|
32
33
|
# @return [String]
|
33
34
|
# the converted value
|
34
|
-
def parse(
|
35
|
-
@converter.parse(
|
35
|
+
def parse(value)
|
36
|
+
@converter.parse(value)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
@@ -2,9 +2,10 @@
|
|
2
2
|
require 'fedux_org_stdlib/logic_converters/exceptions'
|
3
3
|
|
4
4
|
module FeduxOrgStdlib
|
5
|
+
# Logic Converters
|
5
6
|
module LogicConverters
|
7
|
+
# Convert on/off to true/false
|
6
8
|
class OnOffConverter
|
7
|
-
|
8
9
|
# @param [true,false] value
|
9
10
|
# the logic value which should be converted
|
10
11
|
# @return [String]
|
@@ -17,8 +18,8 @@ module FeduxOrgStdlib
|
|
17
18
|
# @example Parse false
|
18
19
|
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
19
20
|
# converter.parse( false ) # off
|
20
|
-
#
|
21
|
-
def parse(
|
21
|
+
#
|
22
|
+
def parse(value)
|
22
23
|
case value
|
23
24
|
when true
|
24
25
|
'on'
|
@@ -27,7 +28,7 @@ module FeduxOrgStdlib
|
|
27
28
|
when ''
|
28
29
|
nil
|
29
30
|
else
|
30
|
-
|
31
|
+
fail FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
31
32
|
end
|
32
33
|
end
|
33
34
|
end
|
@@ -3,8 +3,8 @@ require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
3
|
|
4
4
|
module FeduxOrgStdlib
|
5
5
|
module LogicConverters
|
6
|
+
# Convert 'true'/'false' to true/false
|
6
7
|
class TrueFalseConverter
|
7
|
-
|
8
8
|
# @param [true,false] value
|
9
9
|
# the logic value which should be converted
|
10
10
|
# @return [String]
|
@@ -17,7 +17,7 @@ module FeduxOrgStdlib
|
|
17
17
|
# @example Parse false
|
18
18
|
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
19
19
|
# converter.parse( false ) # 'false'
|
20
|
-
def parse(
|
20
|
+
def parse(value)
|
21
21
|
case value
|
22
22
|
when true
|
23
23
|
'true'
|
@@ -26,7 +26,7 @@ module FeduxOrgStdlib
|
|
26
26
|
when ''
|
27
27
|
nil
|
28
28
|
else
|
29
|
-
|
29
|
+
fail FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -3,8 +3,8 @@ require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
3
|
|
4
4
|
module FeduxOrgStdlib
|
5
5
|
module LogicConverters
|
6
|
+
# Convert y/n to true/false
|
6
7
|
class YNConverter
|
7
|
-
|
8
8
|
# @param [true,false] value
|
9
9
|
# the logic value which should be converted
|
10
10
|
# @return [String]
|
@@ -17,7 +17,7 @@ module FeduxOrgStdlib
|
|
17
17
|
# @example Parse false
|
18
18
|
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
19
19
|
# converter.parse( false ) # 'n'
|
20
|
-
def parse(
|
20
|
+
def parse(value)
|
21
21
|
case value
|
22
22
|
when true
|
23
23
|
'y'
|
@@ -26,7 +26,7 @@ module FeduxOrgStdlib
|
|
26
26
|
when ''
|
27
27
|
nil
|
28
28
|
else
|
29
|
-
|
29
|
+
fail FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -3,6 +3,7 @@ require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
3
|
|
4
4
|
module FeduxOrgStdlib
|
5
5
|
module LogicConverters
|
6
|
+
# Convert yes/no to true/false
|
6
7
|
class YesNoConverter
|
7
8
|
# @param [true,false] value
|
8
9
|
# the logic value which should be converted
|
@@ -16,8 +17,8 @@ module FeduxOrgStdlib
|
|
16
17
|
# @example Parse false
|
17
18
|
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
18
19
|
# converter.parse( false ) # 'no'
|
19
|
-
#
|
20
|
-
def parse(
|
20
|
+
#
|
21
|
+
def parse(value)
|
21
22
|
case value
|
22
23
|
when true
|
23
24
|
'yes'
|
@@ -26,7 +27,7 @@ module FeduxOrgStdlib
|
|
26
27
|
when ''
|
27
28
|
nil
|
28
29
|
else
|
29
|
-
|
30
|
+
fail FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
30
31
|
end
|
31
32
|
end
|
32
33
|
end
|
@@ -2,12 +2,12 @@
|
|
2
2
|
require 'fedux_org_stdlib/require_files'
|
3
3
|
require 'fedux_org_stdlib/logging'
|
4
4
|
require 'fedux_org_stdlib/models/exceptions'
|
5
|
-
require_library %w
|
5
|
+
require_library %w(set)
|
6
6
|
|
7
7
|
module FeduxOrgStdlib
|
8
8
|
module Models
|
9
|
+
# Base model
|
9
10
|
class BaseModel
|
10
|
-
|
11
11
|
include Comparable
|
12
12
|
|
13
13
|
@instances = ::Set.new
|
@@ -23,13 +23,13 @@ module FeduxOrgStdlib
|
|
23
23
|
@enabled = false
|
24
24
|
end
|
25
25
|
|
26
|
-
#enable action
|
26
|
+
# enable action
|
27
27
|
def enable
|
28
28
|
@enabled = true
|
29
29
|
end
|
30
30
|
|
31
|
-
#check if action is enabled
|
32
|
-
def enabled?(val=true)
|
31
|
+
# check if action is enabled
|
32
|
+
def enabled?(val = true)
|
33
33
|
@enabled == val
|
34
34
|
end
|
35
35
|
|
@@ -46,11 +46,11 @@ module FeduxOrgStdlib
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def hash
|
49
|
-
name.to_s.hash
|
49
|
+
name.to_s.hash
|
50
50
|
end
|
51
51
|
|
52
52
|
class << self
|
53
|
-
#attr_accessor :instances
|
53
|
+
# attr_accessor :instances
|
54
54
|
|
55
55
|
def register(element)
|
56
56
|
@instances << element
|
@@ -58,17 +58,17 @@ module FeduxOrgStdlib
|
|
58
58
|
element
|
59
59
|
end
|
60
60
|
|
61
|
-
def create(
|
61
|
+
def create(*args, &block)
|
62
62
|
if block_given?
|
63
|
-
register(
|
63
|
+
register(new(*args, &block))
|
64
64
|
else
|
65
|
-
register(
|
65
|
+
register(new(*args))
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def delete(
|
70
|
-
element =
|
71
|
-
|
69
|
+
def delete(val)
|
70
|
+
element = find(val.to_s.to_sym)
|
71
|
+
fail FeduxOrgStdlib::Exceptions::InstanceNotFound unless element
|
72
72
|
@instances.delete element
|
73
73
|
|
74
74
|
element
|
@@ -82,8 +82,8 @@ module FeduxOrgStdlib
|
|
82
82
|
@instances.to_a
|
83
83
|
end
|
84
84
|
|
85
|
-
#return all names as string
|
86
|
-
def all_names_as_string(connector=
|
85
|
+
# return all names as string
|
86
|
+
def all_names_as_string(connector = ', ')
|
87
87
|
find_all(enabled: true).map(&:name).sort.join(connector)
|
88
88
|
end
|
89
89
|
|
@@ -95,36 +95,35 @@ module FeduxOrgStdlib
|
|
95
95
|
@instances.to_a.last
|
96
96
|
end
|
97
97
|
|
98
|
-
#enables a specific instance
|
98
|
+
# enables a specific instance
|
99
99
|
def enable(name)
|
100
100
|
find(name: name).enable
|
101
|
-
rescue NoMethodError
|
101
|
+
rescue NoMethodError
|
102
102
|
raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, "Sorry I'm not able to enable \"#{name}\". You need to create an instance with name \"#{name}\" first."
|
103
103
|
end
|
104
104
|
|
105
|
-
#finds a single instance
|
105
|
+
# finds a single instance
|
106
106
|
def find(criteria = {})
|
107
107
|
find_all(criteria).first
|
108
108
|
end
|
109
109
|
|
110
|
-
#finds all instances
|
110
|
+
# finds all instances
|
111
111
|
def find_all(criteria = {})
|
112
112
|
FeduxOrgStdlib.logger.debug(self) { "Criteria for search: #{ criteria }" }
|
113
|
-
criteria = { name: criteria.to_sym } if criteria.
|
113
|
+
criteria = { name: criteria.to_sym } if criteria.is_a?(Symbol) || criteria.is_a?(String)
|
114
114
|
|
115
|
-
FeduxOrgStdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(
|
116
|
-
@instances.
|
117
|
-
criteria.all? do |c,v|
|
115
|
+
FeduxOrgStdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(', ') }" }
|
116
|
+
@instances.select do |i|
|
117
|
+
criteria.all? do |c, v|
|
118
118
|
|
119
119
|
FeduxOrgStdlib.logger.debug(self) { "Check method for search: #{ c }" }
|
120
|
-
i.send(
|
120
|
+
i.send("#{c}?".to_sym, v)
|
121
121
|
end
|
122
122
|
end
|
123
123
|
rescue NameError => e
|
124
124
|
raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, e.message
|
125
125
|
end
|
126
126
|
end
|
127
|
-
|
128
127
|
end
|
129
128
|
end
|
130
129
|
end
|