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
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
require 'fedux_org/stdlib/logic_converters/logic_converter'
|
|
3
|
-
require 'fedux_org/stdlib/logic_converters/on_off_converter'
|
|
4
|
-
require 'fedux_org/stdlib/logic_converters/true_false_converter'
|
|
5
|
-
require 'fedux_org/stdlib/logic_converters/yes_no_converter'
|
|
6
|
-
|
|
7
|
-
module FeduxOrg
|
|
8
|
-
module Stdlib
|
|
9
|
-
module LogicConverters
|
|
10
|
-
end
|
|
11
|
-
end
|
|
12
|
-
end
|
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
|
|
3
|
-
require 'fedux_org/stdlib/logic_converters/on_off_converter'
|
|
4
|
-
require 'fedux_org/stdlib/logic_converters/true_false_converter'
|
|
5
|
-
require 'fedux_org/stdlib/logic_converters/yes_no_converter'
|
|
6
|
-
require 'fedux_org/stdlib/logic_converters/y_n_converter'
|
|
7
|
-
|
|
8
|
-
module FeduxOrg
|
|
9
|
-
module Stdlib
|
|
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 FeduxOrg::Stdlib::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
|
|
40
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
|
|
3
|
-
module FeduxOrg
|
|
4
|
-
module Stdlib
|
|
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 = FeduxOrg::Stdlib::LogicConverters::OnOffConverter.new
|
|
15
|
-
# converter.parse( true ) # on
|
|
16
|
-
#
|
|
17
|
-
# @example Parse false
|
|
18
|
-
# converter = FeduxOrg::Stdlib::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 FeduxOrg::Stdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
|
|
3
|
-
module FeduxOrg
|
|
4
|
-
module Stdlib
|
|
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 = FeduxOrg::Stdlib::LogicConverters::OnOffConverter.new
|
|
15
|
-
# converter.parse( true ) # 'true'
|
|
16
|
-
#
|
|
17
|
-
# @example Parse false
|
|
18
|
-
# converter = FeduxOrg::Stdlib::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 FeduxOrg::Stdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
|
|
3
|
-
module FeduxOrg
|
|
4
|
-
module Stdlib
|
|
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 = FeduxOrg::Stdlib::LogicConverters::OnOffConverter.new
|
|
15
|
-
# converter.parse( true ) # 'y'
|
|
16
|
-
#
|
|
17
|
-
# @example Parse false
|
|
18
|
-
# converter = FeduxOrg::Stdlib::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 FeduxOrg::Stdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logic_converters/exceptions'
|
|
2
|
-
|
|
3
|
-
module FeduxOrg
|
|
4
|
-
module Stdlib
|
|
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 = FeduxOrg::Stdlib::LogicConverters::OnOffConverter.new
|
|
14
|
-
# converter.parse( true ) # 'yes'
|
|
15
|
-
#
|
|
16
|
-
# @example Parse false
|
|
17
|
-
# converter = FeduxOrg::Stdlib::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 FeduxOrg::Stdlib::LogicConverters::Exceptions::InvalidValue, "Unknown logic value \"#{value}\"."
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
require 'fedux_org/stdlib/logging'
|
|
2
|
-
require 'fedux_org/stdlib/models/exceptions'
|
|
3
|
-
|
|
4
|
-
module FeduxOrg
|
|
5
|
-
module Stdlib
|
|
6
|
-
module Models
|
|
7
|
-
class BaseModel
|
|
8
|
-
|
|
9
|
-
include Comparable
|
|
10
|
-
|
|
11
|
-
@instances = ::Set.new
|
|
12
|
-
|
|
13
|
-
attr_reader :name
|
|
14
|
-
|
|
15
|
-
def self.inherited(base)
|
|
16
|
-
base.instance_variable_set(:@instances, Set.new)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def initialize(name)
|
|
20
|
-
@name = name.to_sym
|
|
21
|
-
@enabled = false
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
#enable action
|
|
25
|
-
def enable
|
|
26
|
-
@enabled = true
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
#check if action is enabled
|
|
30
|
-
def enabled?(val=true)
|
|
31
|
-
@enabled == val
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
def name?(name)
|
|
35
|
-
@name == name
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def <=>(other)
|
|
39
|
-
name <=> other.name
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def eql?(other)
|
|
43
|
-
name == other.name
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def hash
|
|
47
|
-
name.to_s.hash
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
class << self
|
|
51
|
-
#attr_accessor :instances
|
|
52
|
-
|
|
53
|
-
def register(element)
|
|
54
|
-
@instances << element
|
|
55
|
-
|
|
56
|
-
element
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def create( *args, &block )
|
|
60
|
-
if block_given?
|
|
61
|
-
register( new( *args, &block ) )
|
|
62
|
-
else
|
|
63
|
-
register( new( *args ) )
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def delete( val )
|
|
68
|
-
element = self.find( val.to_s.to_sym )
|
|
69
|
-
raise FeduxOrg::Stdlib::Exceptions::InstanceNotFound unless element
|
|
70
|
-
@instances.delete element
|
|
71
|
-
|
|
72
|
-
element
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def clear
|
|
76
|
-
@instances = Set.new
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def all
|
|
80
|
-
@instances.to_a
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
#return all names as string
|
|
84
|
-
def all_names_as_string(connector=", ")
|
|
85
|
-
find_all(enabled: true).map(&:name).sort.join(connector)
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
def first
|
|
89
|
-
@instances.to_a.first
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def last
|
|
93
|
-
@instances.to_a.last
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
#enables a specific instance
|
|
97
|
-
def enable(name)
|
|
98
|
-
find(name: name).enable
|
|
99
|
-
rescue NoMethodError => e
|
|
100
|
-
raise FeduxOrg::Stdlib::Models::Exceptions::InvalidSearchCriteria, "Sorry I'm not able to enable \"#{name}\". You need to create an instance with name \"#{name}\" first."
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
#finds a single instance
|
|
104
|
-
def find(criteria = {})
|
|
105
|
-
find_all(criteria).first
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
#finds all instances
|
|
109
|
-
def find_all(criteria = {})
|
|
110
|
-
FeduxOrg::Stdlib.logger.debug(self) { "Criteria for search: #{ criteria }" }
|
|
111
|
-
criteria = { name: criteria.to_sym } if criteria.kind_of? Symbol or criteria.kind_of? String
|
|
112
|
-
|
|
113
|
-
FeduxOrg::Stdlib.logger.debug(self) { "Instances to be searched for: #{ @instances.map { |i| "#{i.name} (#{i.class})" }.join(", ") }" }
|
|
114
|
-
@instances.find_all do |i|
|
|
115
|
-
criteria.all? do |c,v|
|
|
116
|
-
|
|
117
|
-
FeduxOrg::Stdlib.logger.debug(self) { "Check method for search: #{ c }" }
|
|
118
|
-
i.send( "#{c}?".to_sym , v )
|
|
119
|
-
end
|
|
120
|
-
end
|
|
121
|
-
rescue NameError => e
|
|
122
|
-
raise FeduxOrg::Stdlib::Models::Exceptions::InvalidSearchCriteria, e.message
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
|
|
126
|
-
end
|
|
127
|
-
end
|
|
128
|
-
end
|
|
129
|
-
end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
begin
|
|
2
|
-
require 'active_support/core_ext/string/inflections'
|
|
3
|
-
require 'active_support/core_ext/object/blank'
|
|
4
|
-
rescue LoadError
|
|
5
|
-
$stderr.puts 'You need to install the "activesupport"-gem to make that library work.'
|
|
6
|
-
exit 1
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
require 'fedux_org/stdlib/models/filesystem_based_model'
|
|
10
|
-
require 'find'
|
|
11
|
-
|
|
12
|
-
module FeduxOrg
|
|
13
|
-
module Stdlib
|
|
14
|
-
module Models
|
|
15
|
-
# model for import action
|
|
16
|
-
module ClassBasedModel
|
|
17
|
-
|
|
18
|
-
def self.included(base)
|
|
19
|
-
base.extend ClassMethods
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
module ClassMethods
|
|
23
|
-
|
|
24
|
-
def require_path(name)
|
|
25
|
-
path = File.join( library_name.underscore , model_name.pluralize.underscore , name.to_s )
|
|
26
|
-
FeduxOrg::Stdlib.logger.debug(self) { "Path to instances of model \"#{name}\": #{path}" }
|
|
27
|
-
|
|
28
|
-
path
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def exception_for_model
|
|
32
|
-
"#{library_name}::Exceptions::Invalid#{model_name}".constantize
|
|
33
|
-
rescue
|
|
34
|
-
raise FeduxOrg::Stdlib::Models::Exceptions::ExceptionNeedsToBeImplemented, "Exception \"#{library_name}::Exceptions::Invalid#{model_name}\" does not exist."
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def check_klass( klass , *methods)
|
|
38
|
-
raise exception_for_model, "A valid \"#{model_name}\"-class needs to respond to \"#{ methods.flatten.join(", ") }\"." unless methods.flatten.all? { |m| klass.new.respond_to? m }
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def build_class_constant(name)
|
|
42
|
-
"#{library_name}::#{model_name.pluralize}::#{name.to_s.camelcase}".constantize
|
|
43
|
-
rescue
|
|
44
|
-
raise exception_for_model , "Class \"#{library_name}::#{model_name.pluralize}::#{name.to_s.camelcase}\" cannot be found in file \"#{require_path(name)}\"."
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def check_method
|
|
48
|
-
raise FeduxOrg::Stdlib::Models::Exceptions::MethodNeedsToBeImplemented, "Method \"check_method\" does not exist."
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
def suffix
|
|
52
|
-
'.rb'
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def load_from_filesystem
|
|
56
|
-
files = find_files
|
|
57
|
-
|
|
58
|
-
FeduxOrg::Stdlib.logger.debug(self) { "Files found at path \"#{path_to_instances}\": #{ files.join(", ") }" }
|
|
59
|
-
|
|
60
|
-
raise FeduxOrg::Stdlib::Models::Exceptions::NoImplementationsForModelFound, "You might need to store files at \"#{File.dirname(path_to_instances)}\" to make the library work." if files.blank?
|
|
61
|
-
|
|
62
|
-
files.each do |f|
|
|
63
|
-
instance_name = name( f )
|
|
64
|
-
|
|
65
|
-
require require_path( instance_name )
|
|
66
|
-
|
|
67
|
-
instance_klass = build_class_constant( instance_name )
|
|
68
|
-
check_klass( instance_klass, check_method )
|
|
69
|
-
create( instance_name , instance_klass.new )
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
module FeduxOrg
|
|
2
|
-
module Stdlib
|
|
3
|
-
module Models
|
|
4
|
-
module Exceptions
|
|
5
|
-
#internal error
|
|
6
|
-
class InternalError < Exception; end
|
|
7
|
-
|
|
8
|
-
#raised if one tries to delete an instance which
|
|
9
|
-
#does not exist
|
|
10
|
-
class InstanceNotFound < InternalError; end
|
|
11
|
-
|
|
12
|
-
#raised if one tries to use a keyword whose use
|
|
13
|
-
#is restricted
|
|
14
|
-
class UnauthorizedUseOfKeyword < InternalError; end
|
|
15
|
-
|
|
16
|
-
#raised if one uses invalid search criteria
|
|
17
|
-
class InvalidSearchCriteria < InternalError; end
|
|
18
|
-
|
|
19
|
-
#raised if the code which defines an import filter
|
|
20
|
-
#is malformed
|
|
21
|
-
class MethodNeedsToBeImplemented < InternalError; end
|
|
22
|
-
|
|
23
|
-
#raised if one tries to use an unimplemented exception
|
|
24
|
-
class ExceptionNeedsToBeImplemented < InternalError; end
|
|
25
|
-
|
|
26
|
-
#raised if one forgot to store files at `path_to_instances`
|
|
27
|
-
class NoImplementationsForModelFound < InternalError; end
|
|
28
|
-
|
|
29
|
-
#raised if an file system error occured
|
|
30
|
-
class FilesystemError < Exception ; end
|
|
31
|
-
|
|
32
|
-
#raise if a directory does not exist in filesystem
|
|
33
|
-
class DirectoryDoesNotExist < FilesystemError; end
|
|
34
|
-
|
|
35
|
-
#raise if a file does not exist in filesystem
|
|
36
|
-
class FileDoesNotExist < FilesystemError; end
|
|
37
|
-
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
end
|
|
41
|
-
end
|