fedux_org-stdlib 0.7.21 → 0.7.22
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/.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
|