fedux_org-stdlib 0.3.2 → 0.6.3
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 +7 -0
- data/.rspec +2 -0
- data/.simplecov +7 -6
- data/Gemfile +33 -28
- data/README.md +1 -1
- data/Rakefile +8 -1
- data/doc/colors.md +2 -2
- data/doc/commands.md +2 -2
- data/doc/logic_converters.md +5 -5
- data/doc/models.md +5 -5
- data/fedux_org-stdlib.gemspec +3 -7
- data/lib/fedux_org_stdlib.rb +13 -0
- data/lib/fedux_org_stdlib/app_config.rb +247 -0
- data/lib/fedux_org_stdlib/ci.rb +6 -0
- data/lib/fedux_org_stdlib/colors/html_color.rb +18 -0
- data/lib/fedux_org_stdlib/command.rb +10 -0
- data/lib/fedux_org_stdlib/command/command_result.rb +13 -0
- data/lib/fedux_org_stdlib/command/run_command.rb +55 -0
- data/lib/fedux_org_stdlib/command/which.rb +60 -0
- data/lib/fedux_org_stdlib/core_ext/array.rb +6 -0
- data/lib/fedux_org_stdlib/core_ext/string.rb +3 -0
- data/lib/fedux_org_stdlib/environment.rb +32 -0
- data/lib/fedux_org_stdlib/filesystem.rb +248 -0
- data/lib/fedux_org_stdlib/filesystem/exceptions.rb +12 -0
- data/lib/fedux_org_stdlib/logging.rb +12 -0
- data/lib/fedux_org_stdlib/logging/logger.rb +79 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logging/severity.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters.rb +11 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logic_converters/exceptions.rb +1 -0
- data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +39 -0
- data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +35 -0
- data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +34 -0
- data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +34 -0
- data/lib/fedux_org_stdlib/models.rb +5 -0
- data/lib/fedux_org_stdlib/models/base_model.rb +129 -0
- data/lib/fedux_org_stdlib/models/class_based_model.rb +67 -0
- data/lib/fedux_org_stdlib/models/exceptions.rb +40 -0
- data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +98 -0
- data/lib/fedux_org_stdlib/project.rb +6 -0
- data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +35 -0
- data/lib/fedux_org_stdlib/project/logger.rb +12 -0
- data/lib/fedux_org_stdlib/project/plan.rb +26 -0
- data/lib/fedux_org_stdlib/project/report.rb +63 -0
- data/lib/fedux_org_stdlib/rake.rb +8 -0
- data/lib/fedux_org_stdlib/rake/exceptions.rb +9 -0
- data/lib/{fedux_org/stdlib → fedux_org_stdlib}/rake/project.rb +4 -4
- data/lib/fedux_org_stdlib/rake/project_task.rb +29 -0
- data/lib/fedux_org_stdlib/rake/shell_task.rb +45 -0
- data/lib/fedux_org_stdlib/rake/sub_task.rb +26 -0
- data/lib/fedux_org_stdlib/rake/task.rb +118 -0
- data/lib/fedux_org_stdlib/rake/version_bump_task.rb +56 -0
- data/lib/fedux_org_stdlib/rake_tasks.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/console.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation.rb +2 -0
- data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/project.rb +1 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report.rb +3 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +10 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/terminal.rb +9 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests.rb +4 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +13 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/rspec.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version.rb +6 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/bump.rb +8 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/restore.rb +11 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show.rb +12 -0
- data/lib/fedux_org_stdlib/rake_tasks/version/show_shortcut.rb +9 -0
- data/lib/fedux_org_stdlib/require_files.rb +27 -0
- data/lib/fedux_org_stdlib/version.rb +5 -0
- data/lib/fedux_org_stdlib/version_management/exceptions.rb +9 -0
- data/lib/fedux_org_stdlib/version_management/library_builder.rb +12 -0
- data/lib/fedux_org_stdlib/version_management/ruby_library.rb +13 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +78 -0
- data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +22 -0
- data/lib/fedux_org_stdlib/version_management/version.rb +25 -0
- data/lib/fedux_org_stdlib/version_management/version_builder.rb +12 -0
- data/lib/fedux_org_stdlib/versionable.rb +18 -0
- data/rakefiles/default.rake +8 -1
- data/rakefiles/travis.rake +1 -1
- data/script/console +1 -1
- data/script/terminal +3 -2
- data/spec/app_config_spec.rb +7 -0
- data/spec/colors/html_color_spec.rb +7 -14
- data/spec/command/run_command_spec.rb +9 -10
- data/spec/command/which_spec.rb +8 -9
- data/spec/environment_spec.rb +12 -11
- data/spec/logger/logger_spec.rb +17 -16
- data/spec/logic_converters/on_off_converter_spec.rb +8 -7
- data/spec/logic_converters/true_false_converter_spec.rb +8 -7
- data/spec/logic_converters/y_n_converter_spec.rb +8 -7
- data/spec/logic_converters/yes_no_converter_spec.rb +8 -7
- data/spec/models/base_model_spec.rb +7 -7
- data/spec/models/class_based_model_spec.rb +37 -39
- data/spec/models/filesystem_based_model_spec.rb +24 -24
- data/spec/project/plan_spec.rb +6 -5
- data/spec/project/report_spec.rb +35 -29
- data/spec/project/taskjuggler_spec.rb +13 -12
- data/spec/spec_helper.rb +15 -38
- data/spec/support/environment.rb +16 -0
- data/spec/support/filesystem.rb +19 -0
- data/spec/support/reporting.rb +2 -0
- data/spec/support/rspec.rb +5 -0
- data/spec/support/string.rb +2 -0
- data/spec/version_management/library_builder_spec.rb +5 -4
- data/spec/version_management/ruby_library_spec.rb +5 -4
- data/spec/version_management/rubygem_version_file_parser_spec.rb +27 -16
- data/spec/version_management/rubygem_version_file_spec.rb +56 -54
- data/spec/version_management/version_builder_spec.rb +5 -4
- data/spec/version_management/version_spec.rb +16 -16
- metadata +104 -110
- data/lib/fedux_org/stdlib.rb +0 -15
- data/lib/fedux_org/stdlib/colors/html_color.rb +0 -19
- data/lib/fedux_org/stdlib/command.rb +0 -11
- data/lib/fedux_org/stdlib/command/command_result.rb +0 -14
- data/lib/fedux_org/stdlib/command/run_command.rb +0 -55
- data/lib/fedux_org/stdlib/command/which.rb +0 -67
- data/lib/fedux_org/stdlib/environment.rb +0 -31
- data/lib/fedux_org/stdlib/filesystem.rb +0 -247
- data/lib/fedux_org/stdlib/filesystem/exceptions.rb +0 -13
- data/lib/fedux_org/stdlib/logging.rb +0 -13
- data/lib/fedux_org/stdlib/logging/logger.rb +0 -79
- data/lib/fedux_org/stdlib/logic_converters.rb +0 -12
- data/lib/fedux_org/stdlib/logic_converters/logic_converter.rb +0 -40
- data/lib/fedux_org/stdlib/logic_converters/on_off_converter.rb +0 -36
- data/lib/fedux_org/stdlib/logic_converters/true_false_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/y_n_converter.rb +0 -35
- data/lib/fedux_org/stdlib/logic_converters/yes_no_converter.rb +0 -35
- data/lib/fedux_org/stdlib/models.rb +0 -4
- data/lib/fedux_org/stdlib/models/base_model.rb +0 -129
- data/lib/fedux_org/stdlib/models/class_based_model.rb +0 -76
- data/lib/fedux_org/stdlib/models/exceptions.rb +0 -41
- data/lib/fedux_org/stdlib/models/filesystem_based_model.rb +0 -99
- data/lib/fedux_org/stdlib/project.rb +0 -5
- data/lib/fedux_org/stdlib/project/generators/taskjuggler.rb +0 -41
- data/lib/fedux_org/stdlib/project/logger.rb +0 -13
- data/lib/fedux_org/stdlib/project/plan.rb +0 -15
- data/lib/fedux_org/stdlib/project/report.rb +0 -67
- data/lib/fedux_org/stdlib/rake.rb +0 -7
- data/lib/fedux_org/stdlib/rake/console.rb +0 -3
- data/lib/fedux_org/stdlib/rake/documentation.rb +0 -1
- data/lib/fedux_org/stdlib/rake/documentation/yard.rb +0 -14
- data/lib/fedux_org/stdlib/rake/gems.rb +0 -2
- data/lib/fedux_org/stdlib/rake/gems/bundler.rb +0 -12
- data/lib/fedux_org/stdlib/rake/gems/package.rb +0 -7
- data/lib/fedux_org/stdlib/rake/library.rb +0 -8
- data/lib/fedux_org/stdlib/rake/terminal.rb +0 -9
- data/lib/fedux_org/stdlib/rake/tests.rb +0 -3
- data/lib/fedux_org/stdlib/rake/tests/cucumber.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/rspec.rb +0 -6
- data/lib/fedux_org/stdlib/rake/tests/travis.rb +0 -15
- data/lib/fedux_org/stdlib/rake/travis.rb +0 -1
- data/lib/fedux_org/stdlib/rake/travis/lint.rb +0 -10
- data/lib/fedux_org/stdlib/rake/version.rb +0 -4
- data/lib/fedux_org/stdlib/rake/version/base.rb +0 -7
- data/lib/fedux_org/stdlib/rake/version/bump.rb +0 -78
- data/lib/fedux_org/stdlib/rake/version/restore.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show.rb +0 -9
- data/lib/fedux_org/stdlib/rake/version/show_shortcut.rb +0 -6
- data/lib/fedux_org/stdlib/version.rb +0 -6
- data/lib/fedux_org/stdlib/version_management/library_builder.rb +0 -15
- data/lib/fedux_org/stdlib/version_management/ruby_library.rb +0 -14
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file.rb +0 -90
- data/lib/fedux_org/stdlib/version_management/rubygem_version_file_parser.rb +0 -18
- data/lib/fedux_org/stdlib/version_management/version.rb +0 -33
- data/lib/fedux_org/stdlib/version_management/version_builder.rb +0 -15
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
module FeduxOrgStdlib
|
|
3
|
+
module FileSystem
|
|
4
|
+
module Exceptions
|
|
5
|
+
# Raise if path with '..' given
|
|
6
|
+
class InvalidPath < Exception; end
|
|
7
|
+
|
|
8
|
+
#Raised if library is not used correctly
|
|
9
|
+
class InvalidUsageOfLibrary < Exception; end
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/require_files'
|
|
3
|
+
require_library %w{ logger forwardable }
|
|
4
|
+
|
|
5
|
+
require 'fedux_org_stdlib/logging/severity'
|
|
6
|
+
|
|
7
|
+
module FeduxOrgStdlib
|
|
8
|
+
module Logging
|
|
9
|
+
class Logger
|
|
10
|
+
|
|
11
|
+
extend ::Forwardable
|
|
12
|
+
def_delegators :@logger, :fatal, :warn, :debug, :info, :error, :unknown
|
|
13
|
+
|
|
14
|
+
attr_reader :mode
|
|
15
|
+
|
|
16
|
+
# Create logger
|
|
17
|
+
#
|
|
18
|
+
# @param [Logger] logger (::Logger.new( $stderr ))
|
|
19
|
+
# The logger with should be used to output data
|
|
20
|
+
def initialize(logger = ::Logger.new( $stderr ) )
|
|
21
|
+
@logger = logger
|
|
22
|
+
self.mode = :info
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
# Reset logger to ruby logger
|
|
26
|
+
def reset
|
|
27
|
+
@logger = ::Logger.new( $stderr )
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# Change mode of logger: DEBUG, ... + Change the output format
|
|
31
|
+
#
|
|
32
|
+
# @param [Symbol] m
|
|
33
|
+
# the mode: DEBUG, ...
|
|
34
|
+
def mode=(m)
|
|
35
|
+
@mode = m
|
|
36
|
+
|
|
37
|
+
case m
|
|
38
|
+
when :debug
|
|
39
|
+
@logger.level = ::Logger::DEBUG
|
|
40
|
+
format_debug
|
|
41
|
+
when :silent
|
|
42
|
+
@logger.level = ::Logger::SILENT
|
|
43
|
+
when :info
|
|
44
|
+
@logger.level = ::Logger::INFO
|
|
45
|
+
format_standard
|
|
46
|
+
else
|
|
47
|
+
@logger.level = ::Logger::INFO
|
|
48
|
+
format_standard
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
private
|
|
53
|
+
|
|
54
|
+
def format_debug
|
|
55
|
+
@logger.formatter = proc { |severity, datetime, progname , msg|
|
|
56
|
+
debug_msg("%s %s %s: %s\n" % [ datetime, severity, progname, msg ])
|
|
57
|
+
}
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def format_standard
|
|
61
|
+
@logger.formatter = proc { |severity, datetime, _, msg|
|
|
62
|
+
info_msg( "%s %s: %s\n" % [ datetime, severity, msg ] )
|
|
63
|
+
}
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def error_msg(msg)
|
|
67
|
+
ANSI.red(msg)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def info_msg(msg)
|
|
71
|
+
msg
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def debug_msg(msg)
|
|
75
|
+
msg
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
require 'fedux_org_stdlib/logic_converters/logic_converter'
|
|
4
|
+
require 'fedux_org_stdlib/logic_converters/on_off_converter'
|
|
5
|
+
require 'fedux_org_stdlib/logic_converters/true_false_converter'
|
|
6
|
+
require 'fedux_org_stdlib/logic_converters/yes_no_converter'
|
|
7
|
+
|
|
8
|
+
module FeduxOrgStdlib
|
|
9
|
+
module LogicConverters
|
|
10
|
+
end
|
|
11
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
|
|
4
|
+
require 'fedux_org_stdlib/logic_converters/on_off_converter'
|
|
5
|
+
require 'fedux_org_stdlib/logic_converters/true_false_converter'
|
|
6
|
+
require 'fedux_org_stdlib/logic_converters/yes_no_converter'
|
|
7
|
+
require 'fedux_org_stdlib/logic_converters/y_n_converter'
|
|
8
|
+
|
|
9
|
+
module FeduxOrgStdlib
|
|
10
|
+
module LogicConverters
|
|
11
|
+
class LogicConverter
|
|
12
|
+
|
|
13
|
+
# @param [String, Symbol] type (true_false, yes_no, on_off)
|
|
14
|
+
# choose the type of converter which should be used
|
|
15
|
+
def initialize(type)
|
|
16
|
+
@converter = case type.to_s
|
|
17
|
+
when 'true_false'
|
|
18
|
+
TrueFalseConverter.new
|
|
19
|
+
when 'yes_no'
|
|
20
|
+
YesNoConverter.new
|
|
21
|
+
when 'on_off'
|
|
22
|
+
OnOffConverter.new
|
|
23
|
+
when 'y_n'
|
|
24
|
+
YNConverter.new
|
|
25
|
+
else
|
|
26
|
+
raise FeduxOrgStdlib::LogicConverters::Exceptions::InvalidType, "Unknown type \"#{type}\" for logic converter. Valid types are \"true_false\", \"yes_no\" or \"on_off\"."
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
# @param [true,false] value
|
|
31
|
+
# the logic value which should be converted
|
|
32
|
+
# @return [String]
|
|
33
|
+
# the converted value
|
|
34
|
+
def parse( value )
|
|
35
|
+
@converter.parse( value )
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
|
|
4
|
+
module FeduxOrgStdlib
|
|
5
|
+
module LogicConverters
|
|
6
|
+
class OnOffConverter
|
|
7
|
+
|
|
8
|
+
# @param [true,false] value
|
|
9
|
+
# the logic value which should be converted
|
|
10
|
+
# @return [String]
|
|
11
|
+
# the converted value: true => on, false => off, '' => nil
|
|
12
|
+
#
|
|
13
|
+
# @example Parse true
|
|
14
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
15
|
+
# converter.parse( true ) # on
|
|
16
|
+
#
|
|
17
|
+
# @example Parse false
|
|
18
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
19
|
+
# converter.parse( false ) # off
|
|
20
|
+
#
|
|
21
|
+
def parse( value )
|
|
22
|
+
case value
|
|
23
|
+
when true
|
|
24
|
+
'on'
|
|
25
|
+
when false
|
|
26
|
+
'off'
|
|
27
|
+
when ''
|
|
28
|
+
nil
|
|
29
|
+
else
|
|
30
|
+
raise FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
|
|
4
|
+
module FeduxOrgStdlib
|
|
5
|
+
module LogicConverters
|
|
6
|
+
class TrueFalseConverter
|
|
7
|
+
|
|
8
|
+
# @param [true,false] value
|
|
9
|
+
# the logic value which should be converted
|
|
10
|
+
# @return [String]
|
|
11
|
+
# the converted value: true => 'true', false => 'false', '' => nil
|
|
12
|
+
#
|
|
13
|
+
# @example Parse true
|
|
14
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
15
|
+
# converter.parse( true ) # 'true'
|
|
16
|
+
#
|
|
17
|
+
# @example Parse false
|
|
18
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
19
|
+
# converter.parse( false ) # 'false'
|
|
20
|
+
def parse( value )
|
|
21
|
+
case value
|
|
22
|
+
when true
|
|
23
|
+
'true'
|
|
24
|
+
when false
|
|
25
|
+
'false'
|
|
26
|
+
when ''
|
|
27
|
+
nil
|
|
28
|
+
else
|
|
29
|
+
raise FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
|
|
4
|
+
module FeduxOrgStdlib
|
|
5
|
+
module LogicConverters
|
|
6
|
+
class YNConverter
|
|
7
|
+
|
|
8
|
+
# @param [true,false] value
|
|
9
|
+
# the logic value which should be converted
|
|
10
|
+
# @return [String]
|
|
11
|
+
# the converted value: true => y, false => n, '' => nil
|
|
12
|
+
#
|
|
13
|
+
# @example Parse true
|
|
14
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
15
|
+
# converter.parse( true ) # 'y'
|
|
16
|
+
#
|
|
17
|
+
# @example Parse false
|
|
18
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
19
|
+
# converter.parse( false ) # 'n'
|
|
20
|
+
def parse( value )
|
|
21
|
+
case value
|
|
22
|
+
when true
|
|
23
|
+
'y'
|
|
24
|
+
when false
|
|
25
|
+
'n'
|
|
26
|
+
when ''
|
|
27
|
+
nil
|
|
28
|
+
else
|
|
29
|
+
raise FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logic_converters/exceptions'
|
|
3
|
+
|
|
4
|
+
module FeduxOrgStdlib
|
|
5
|
+
module LogicConverters
|
|
6
|
+
class YesNoConverter
|
|
7
|
+
# @param [true,false] value
|
|
8
|
+
# the logic value which should be converted
|
|
9
|
+
# @return [String]
|
|
10
|
+
# the converted value: true => yes, false => no, '' => nil
|
|
11
|
+
#
|
|
12
|
+
# @example Parse true
|
|
13
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
14
|
+
# converter.parse( true ) # 'yes'
|
|
15
|
+
#
|
|
16
|
+
# @example Parse false
|
|
17
|
+
# converter = FeduxOrgStdlib::LogicConverters::OnOffConverter.new
|
|
18
|
+
# converter.parse( false ) # 'no'
|
|
19
|
+
#
|
|
20
|
+
def parse( value )
|
|
21
|
+
case value
|
|
22
|
+
when true
|
|
23
|
+
'yes'
|
|
24
|
+
when false
|
|
25
|
+
'no'
|
|
26
|
+
when ''
|
|
27
|
+
nil
|
|
28
|
+
else
|
|
29
|
+
raise FeduxOrgStdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
# encoding: utf-8
|
|
2
|
+
require 'fedux_org_stdlib/logging'
|
|
3
|
+
require 'fedux_org_stdlib/models/exceptions'
|
|
4
|
+
require_library %w{ set }
|
|
5
|
+
|
|
6
|
+
module FeduxOrgStdlib
|
|
7
|
+
module Models
|
|
8
|
+
class BaseModel
|
|
9
|
+
|
|
10
|
+
include Comparable
|
|
11
|
+
|
|
12
|
+
@instances = ::Set.new
|
|
13
|
+
|
|
14
|
+
attr_reader :name
|
|
15
|
+
|
|
16
|
+
def self.inherited(base)
|
|
17
|
+
base.instance_variable_set(:@instances, Set.new)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def initialize(name)
|
|
21
|
+
@name = name.to_sym
|
|
22
|
+
@enabled = false
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
#enable action
|
|
26
|
+
def enable
|
|
27
|
+
@enabled = true
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
#check if action is enabled
|
|
31
|
+
def enabled?(val=true)
|
|
32
|
+
@enabled == val
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def name?(name)
|
|
36
|
+
@name == name
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def <=>(other)
|
|
40
|
+
name <=> other.name
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def eql?(other)
|
|
44
|
+
name == other.name
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def hash
|
|
48
|
+
name.to_s.hash
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
class << self
|
|
52
|
+
#attr_accessor :instances
|
|
53
|
+
|
|
54
|
+
def register(element)
|
|
55
|
+
@instances << element
|
|
56
|
+
|
|
57
|
+
element
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def create( *args, &block )
|
|
61
|
+
if block_given?
|
|
62
|
+
register( new( *args, &block ) )
|
|
63
|
+
else
|
|
64
|
+
register( new( *args ) )
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def delete( val )
|
|
69
|
+
element = self.find( val.to_s.to_sym )
|
|
70
|
+
raise FeduxOrgStdlib::Exceptions::InstanceNotFound unless element
|
|
71
|
+
@instances.delete element
|
|
72
|
+
|
|
73
|
+
element
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def clear
|
|
77
|
+
@instances = Set.new
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def all
|
|
81
|
+
@instances.to_a
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
#return all names as string
|
|
85
|
+
def all_names_as_string(connector=", ")
|
|
86
|
+
find_all(enabled: true).map(&:name).sort.join(connector)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
def first
|
|
90
|
+
@instances.to_a.first
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def last
|
|
94
|
+
@instances.to_a.last
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
#enables a specific instance
|
|
98
|
+
def enable(name)
|
|
99
|
+
find(name: name).enable
|
|
100
|
+
rescue NoMethodError => e
|
|
101
|
+
raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, "Sorry I'm not able to enable \"#{name}\". You need to create an instance with name \"#{name}\" first."
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
#finds a single instance
|
|
105
|
+
def find(criteria = {})
|
|
106
|
+
find_all(criteria).first
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
#finds all instances
|
|
110
|
+
def find_all(criteria = {})
|
|
111
|
+
FeduxOrgStdlib.logger.debug(self) { "Criteria for search: #{ criteria }" }
|
|
112
|
+
criteria = { name: criteria.to_sym } if criteria.kind_of? Symbol or criteria.kind_of? String
|
|
113
|
+
|
|
114
|
+
FeduxOrgStdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(", ") }" }
|
|
115
|
+
@instances.find_all do |i|
|
|
116
|
+
criteria.all? do |c,v|
|
|
117
|
+
|
|
118
|
+
FeduxOrgStdlib.logger.debug(self) { "Check method for search: #{ c }" }
|
|
119
|
+
i.send( "#{c}?".to_sym , v )
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
rescue NameError => e
|
|
123
|
+
raise FeduxOrgStdlib::Models::Exceptions::InvalidSearchCriteria, e.message
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|