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.
Files changed (175) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.simplecov +7 -6
  4. data/Gemfile +33 -28
  5. data/README.md +1 -1
  6. data/Rakefile +8 -1
  7. data/doc/colors.md +2 -2
  8. data/doc/commands.md +2 -2
  9. data/doc/logic_converters.md +5 -5
  10. data/doc/models.md +5 -5
  11. data/fedux_org-stdlib.gemspec +3 -7
  12. data/lib/fedux_org_stdlib.rb +13 -0
  13. data/lib/fedux_org_stdlib/app_config.rb +247 -0
  14. data/lib/fedux_org_stdlib/ci.rb +6 -0
  15. data/lib/fedux_org_stdlib/colors/html_color.rb +18 -0
  16. data/lib/fedux_org_stdlib/command.rb +10 -0
  17. data/lib/fedux_org_stdlib/command/command_result.rb +13 -0
  18. data/lib/fedux_org_stdlib/command/run_command.rb +55 -0
  19. data/lib/fedux_org_stdlib/command/which.rb +60 -0
  20. data/lib/fedux_org_stdlib/core_ext/array.rb +6 -0
  21. data/lib/fedux_org_stdlib/core_ext/string.rb +3 -0
  22. data/lib/fedux_org_stdlib/environment.rb +32 -0
  23. data/lib/fedux_org_stdlib/filesystem.rb +248 -0
  24. data/lib/fedux_org_stdlib/filesystem/exceptions.rb +12 -0
  25. data/lib/fedux_org_stdlib/logging.rb +12 -0
  26. data/lib/fedux_org_stdlib/logging/logger.rb +79 -0
  27. data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logging/severity.rb +1 -0
  28. data/lib/fedux_org_stdlib/logic_converters.rb +11 -0
  29. data/lib/{fedux_org/stdlib → fedux_org_stdlib}/logic_converters/exceptions.rb +1 -0
  30. data/lib/fedux_org_stdlib/logic_converters/logic_converter.rb +39 -0
  31. data/lib/fedux_org_stdlib/logic_converters/on_off_converter.rb +35 -0
  32. data/lib/fedux_org_stdlib/logic_converters/true_false_converter.rb +34 -0
  33. data/lib/fedux_org_stdlib/logic_converters/y_n_converter.rb +34 -0
  34. data/lib/fedux_org_stdlib/logic_converters/yes_no_converter.rb +34 -0
  35. data/lib/fedux_org_stdlib/models.rb +5 -0
  36. data/lib/fedux_org_stdlib/models/base_model.rb +129 -0
  37. data/lib/fedux_org_stdlib/models/class_based_model.rb +67 -0
  38. data/lib/fedux_org_stdlib/models/exceptions.rb +40 -0
  39. data/lib/fedux_org_stdlib/models/filesystem_based_model.rb +98 -0
  40. data/lib/fedux_org_stdlib/project.rb +6 -0
  41. data/lib/fedux_org_stdlib/project/generators/taskjuggler.rb +35 -0
  42. data/lib/fedux_org_stdlib/project/logger.rb +12 -0
  43. data/lib/fedux_org_stdlib/project/plan.rb +26 -0
  44. data/lib/fedux_org_stdlib/project/report.rb +63 -0
  45. data/lib/fedux_org_stdlib/rake.rb +8 -0
  46. data/lib/fedux_org_stdlib/rake/exceptions.rb +9 -0
  47. data/lib/{fedux_org/stdlib → fedux_org_stdlib}/rake/project.rb +4 -4
  48. data/lib/fedux_org_stdlib/rake/project_task.rb +29 -0
  49. data/lib/fedux_org_stdlib/rake/shell_task.rb +45 -0
  50. data/lib/fedux_org_stdlib/rake/sub_task.rb +26 -0
  51. data/lib/fedux_org_stdlib/rake/task.rb +118 -0
  52. data/lib/fedux_org_stdlib/rake/version_bump_task.rb +56 -0
  53. data/lib/fedux_org_stdlib/rake_tasks.rb +8 -0
  54. data/lib/fedux_org_stdlib/rake_tasks/console.rb +11 -0
  55. data/lib/fedux_org_stdlib/rake_tasks/documentation.rb +2 -0
  56. data/lib/fedux_org_stdlib/rake_tasks/documentation/yard.rb +9 -0
  57. data/lib/fedux_org_stdlib/rake_tasks/gems.rb +3 -0
  58. data/lib/fedux_org_stdlib/rake_tasks/gems/bundler.rb +9 -0
  59. data/lib/fedux_org_stdlib/rake_tasks/gems/package.rb +9 -0
  60. data/lib/fedux_org_stdlib/rake_tasks/project.rb +1 -0
  61. data/lib/fedux_org_stdlib/rake_tasks/project/report.rb +3 -0
  62. data/lib/fedux_org_stdlib/rake_tasks/project/report/generate.rb +10 -0
  63. data/lib/fedux_org_stdlib/rake_tasks/project/report/open.rb +12 -0
  64. data/lib/fedux_org_stdlib/rake_tasks/project/report/open_shortcut.rb +9 -0
  65. data/lib/fedux_org_stdlib/rake_tasks/qa.rb +4 -0
  66. data/lib/fedux_org_stdlib/rake_tasks/qa/rubocop.rb +13 -0
  67. data/lib/fedux_org_stdlib/rake_tasks/qa/travis.rb +13 -0
  68. data/lib/fedux_org_stdlib/rake_tasks/terminal.rb +9 -0
  69. data/lib/fedux_org_stdlib/rake_tasks/tests.rb +4 -0
  70. data/lib/fedux_org_stdlib/rake_tasks/tests/cucumber.rb +13 -0
  71. data/lib/fedux_org_stdlib/rake_tasks/tests/rspec.rb +12 -0
  72. data/lib/fedux_org_stdlib/rake_tasks/tests/travis.rb +11 -0
  73. data/lib/fedux_org_stdlib/rake_tasks/version.rb +6 -0
  74. data/lib/fedux_org_stdlib/rake_tasks/version/bump.rb +8 -0
  75. data/lib/fedux_org_stdlib/rake_tasks/version/restore.rb +11 -0
  76. data/lib/fedux_org_stdlib/rake_tasks/version/show.rb +12 -0
  77. data/lib/fedux_org_stdlib/rake_tasks/version/show_shortcut.rb +9 -0
  78. data/lib/fedux_org_stdlib/require_files.rb +27 -0
  79. data/lib/fedux_org_stdlib/version.rb +5 -0
  80. data/lib/fedux_org_stdlib/version_management/exceptions.rb +9 -0
  81. data/lib/fedux_org_stdlib/version_management/library_builder.rb +12 -0
  82. data/lib/fedux_org_stdlib/version_management/ruby_library.rb +13 -0
  83. data/lib/fedux_org_stdlib/version_management/rubygem_version_file.rb +78 -0
  84. data/lib/fedux_org_stdlib/version_management/rubygem_version_file_parser.rb +22 -0
  85. data/lib/fedux_org_stdlib/version_management/version.rb +25 -0
  86. data/lib/fedux_org_stdlib/version_management/version_builder.rb +12 -0
  87. data/lib/fedux_org_stdlib/versionable.rb +18 -0
  88. data/rakefiles/default.rake +8 -1
  89. data/rakefiles/travis.rake +1 -1
  90. data/script/console +1 -1
  91. data/script/terminal +3 -2
  92. data/spec/app_config_spec.rb +7 -0
  93. data/spec/colors/html_color_spec.rb +7 -14
  94. data/spec/command/run_command_spec.rb +9 -10
  95. data/spec/command/which_spec.rb +8 -9
  96. data/spec/environment_spec.rb +12 -11
  97. data/spec/logger/logger_spec.rb +17 -16
  98. data/spec/logic_converters/on_off_converter_spec.rb +8 -7
  99. data/spec/logic_converters/true_false_converter_spec.rb +8 -7
  100. data/spec/logic_converters/y_n_converter_spec.rb +8 -7
  101. data/spec/logic_converters/yes_no_converter_spec.rb +8 -7
  102. data/spec/models/base_model_spec.rb +7 -7
  103. data/spec/models/class_based_model_spec.rb +37 -39
  104. data/spec/models/filesystem_based_model_spec.rb +24 -24
  105. data/spec/project/plan_spec.rb +6 -5
  106. data/spec/project/report_spec.rb +35 -29
  107. data/spec/project/taskjuggler_spec.rb +13 -12
  108. data/spec/spec_helper.rb +15 -38
  109. data/spec/support/environment.rb +16 -0
  110. data/spec/support/filesystem.rb +19 -0
  111. data/spec/support/reporting.rb +2 -0
  112. data/spec/support/rspec.rb +5 -0
  113. data/spec/support/string.rb +2 -0
  114. data/spec/version_management/library_builder_spec.rb +5 -4
  115. data/spec/version_management/ruby_library_spec.rb +5 -4
  116. data/spec/version_management/rubygem_version_file_parser_spec.rb +27 -16
  117. data/spec/version_management/rubygem_version_file_spec.rb +56 -54
  118. data/spec/version_management/version_builder_spec.rb +5 -4
  119. data/spec/version_management/version_spec.rb +16 -16
  120. metadata +104 -110
  121. data/lib/fedux_org/stdlib.rb +0 -15
  122. data/lib/fedux_org/stdlib/colors/html_color.rb +0 -19
  123. data/lib/fedux_org/stdlib/command.rb +0 -11
  124. data/lib/fedux_org/stdlib/command/command_result.rb +0 -14
  125. data/lib/fedux_org/stdlib/command/run_command.rb +0 -55
  126. data/lib/fedux_org/stdlib/command/which.rb +0 -67
  127. data/lib/fedux_org/stdlib/environment.rb +0 -31
  128. data/lib/fedux_org/stdlib/filesystem.rb +0 -247
  129. data/lib/fedux_org/stdlib/filesystem/exceptions.rb +0 -13
  130. data/lib/fedux_org/stdlib/logging.rb +0 -13
  131. data/lib/fedux_org/stdlib/logging/logger.rb +0 -79
  132. data/lib/fedux_org/stdlib/logic_converters.rb +0 -12
  133. data/lib/fedux_org/stdlib/logic_converters/logic_converter.rb +0 -40
  134. data/lib/fedux_org/stdlib/logic_converters/on_off_converter.rb +0 -36
  135. data/lib/fedux_org/stdlib/logic_converters/true_false_converter.rb +0 -35
  136. data/lib/fedux_org/stdlib/logic_converters/y_n_converter.rb +0 -35
  137. data/lib/fedux_org/stdlib/logic_converters/yes_no_converter.rb +0 -35
  138. data/lib/fedux_org/stdlib/models.rb +0 -4
  139. data/lib/fedux_org/stdlib/models/base_model.rb +0 -129
  140. data/lib/fedux_org/stdlib/models/class_based_model.rb +0 -76
  141. data/lib/fedux_org/stdlib/models/exceptions.rb +0 -41
  142. data/lib/fedux_org/stdlib/models/filesystem_based_model.rb +0 -99
  143. data/lib/fedux_org/stdlib/project.rb +0 -5
  144. data/lib/fedux_org/stdlib/project/generators/taskjuggler.rb +0 -41
  145. data/lib/fedux_org/stdlib/project/logger.rb +0 -13
  146. data/lib/fedux_org/stdlib/project/plan.rb +0 -15
  147. data/lib/fedux_org/stdlib/project/report.rb +0 -67
  148. data/lib/fedux_org/stdlib/rake.rb +0 -7
  149. data/lib/fedux_org/stdlib/rake/console.rb +0 -3
  150. data/lib/fedux_org/stdlib/rake/documentation.rb +0 -1
  151. data/lib/fedux_org/stdlib/rake/documentation/yard.rb +0 -14
  152. data/lib/fedux_org/stdlib/rake/gems.rb +0 -2
  153. data/lib/fedux_org/stdlib/rake/gems/bundler.rb +0 -12
  154. data/lib/fedux_org/stdlib/rake/gems/package.rb +0 -7
  155. data/lib/fedux_org/stdlib/rake/library.rb +0 -8
  156. data/lib/fedux_org/stdlib/rake/terminal.rb +0 -9
  157. data/lib/fedux_org/stdlib/rake/tests.rb +0 -3
  158. data/lib/fedux_org/stdlib/rake/tests/cucumber.rb +0 -6
  159. data/lib/fedux_org/stdlib/rake/tests/rspec.rb +0 -6
  160. data/lib/fedux_org/stdlib/rake/tests/travis.rb +0 -15
  161. data/lib/fedux_org/stdlib/rake/travis.rb +0 -1
  162. data/lib/fedux_org/stdlib/rake/travis/lint.rb +0 -10
  163. data/lib/fedux_org/stdlib/rake/version.rb +0 -4
  164. data/lib/fedux_org/stdlib/rake/version/base.rb +0 -7
  165. data/lib/fedux_org/stdlib/rake/version/bump.rb +0 -78
  166. data/lib/fedux_org/stdlib/rake/version/restore.rb +0 -9
  167. data/lib/fedux_org/stdlib/rake/version/show.rb +0 -9
  168. data/lib/fedux_org/stdlib/rake/version/show_shortcut.rb +0 -6
  169. data/lib/fedux_org/stdlib/version.rb +0 -6
  170. data/lib/fedux_org/stdlib/version_management/library_builder.rb +0 -15
  171. data/lib/fedux_org/stdlib/version_management/ruby_library.rb +0 -14
  172. data/lib/fedux_org/stdlib/version_management/rubygem_version_file.rb +0 -90
  173. data/lib/fedux_org/stdlib/version_management/rubygem_version_file_parser.rb +0 -18
  174. data/lib/fedux_org/stdlib/version_management/version.rb +0 -33
  175. 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,4 +0,0 @@
1
- require 'fedux_org/stdlib/models/exceptions'
2
- require 'fedux_org/stdlib/models/base_model'
3
- require 'fedux_org/stdlib/models/class_based_model'
4
- require 'fedux_org/stdlib/models/filesystem_based_model'
@@ -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