Module: Nucleon::Mixin::Action::Registration

Included in:
Plugin::Action
Defined in:
lib/core/mixin/action/registration.rb

Instance Method Summary collapse

Instance Method Details

#register_array(name, default = [], locale = nil, &code) ⇒ Object




34
35
36
# File 'lib/core/mixin/action/registration.rb', line 34

def register_array(name, default = [], locale = nil, &code)
  register(name, :array, default, locale, &code)
end

#register_bool(name, default = false, locale = nil, &code) ⇒ Object


Registration definitions



10
11
12
# File 'lib/core/mixin/action/registration.rb', line 10

def register_bool(name, default = false, locale = nil, &code)
  register(name, :bool, default, locale, &code)
end

#register_directories(name, default = nil, locale = nil, &code) ⇒ Object




82
83
84
85
86
87
88
89
90
91
92
# File 'lib/core/mixin/action/registration.rb', line 82

def register_directories(name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_array(name, default, option_locale) do |values|
    success = validate_directories(values, validation_locale)
    success = code.call(values, success) if code
    success
  end
end

#register_directory(name, default = nil, locale = nil, &code) ⇒ Object




68
69
70
71
72
73
74
75
76
77
78
# File 'lib/core/mixin/action/registration.rb', line 68

def register_directory(name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_str(name, default, option_locale) do |value|
    success = validate_directory(value, validation_locale)
    success = code.call(value, success) if code
    success
  end
end

#register_file(name, default = nil, locale = nil, &code) ⇒ Object




40
41
42
43
44
45
46
47
48
49
50
# File 'lib/core/mixin/action/registration.rb', line 40

def register_file(name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_str(name, default, option_locale) do |value|
    success = validate_file(value, validation_locale)
    success = code.call(value, success) if code
    success
  end
end

#register_files(name, default = nil, locale = nil, &code) ⇒ Object




54
55
56
57
58
59
60
61
62
63
64
# File 'lib/core/mixin/action/registration.rb', line 54

def register_files(name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_array(name, default, option_locale) do |values|
    success = validate_files(values, validation_locale)
    success = code.call(values, success) if code
    success
  end
end

#register_float(name, default = nil, locale = nil, &code) ⇒ Object




22
23
24
# File 'lib/core/mixin/action/registration.rb', line 22

def register_float(name, default = nil, locale = nil, &code)
  register(name, :float, default, locale, &code)
end

#register_int(name, default = nil, locale = nil, &code) ⇒ Object




16
17
18
# File 'lib/core/mixin/action/registration.rb', line 16

def register_int(name, default = nil, locale = nil, &code)
  register(name, :int, default, locale, &code)
end

#register_plugin(namespace, type, name, default = nil, locale = nil, &code) ⇒ Object




152
153
154
155
156
157
158
159
160
161
162
# File 'lib/core/mixin/action/registration.rb', line 152

def register_plugin(namespace, type, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_str(name, default, option_locale) do |value|
    success = validate_plugins(namespace, type, name, value, validation_locale)
    success = code.call(value, success) if code
    success
  end
end

#register_plugin_provider(namespace, type, name, default = nil, locale = nil, &code) ⇒ Object




124
125
126
127
128
129
130
131
132
133
134
# File 'lib/core/mixin/action/registration.rb', line 124

def register_plugin_provider(namespace, type, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_str(name, default, option_locale) do |value|
    success = validate_plugin_providers(namespace, type, name, value, validation_locale)
    success = code.call(value, success) if code
    success
  end
end

#register_plugin_providers(namespace, type, name, default = nil, locale = nil, &code) ⇒ Object




138
139
140
141
142
143
144
145
146
147
148
# File 'lib/core/mixin/action/registration.rb', line 138

def register_plugin_providers(namespace, type, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_array(name, default, option_locale) do |values|
    success = validate_plugin_providers(namespace, type, name, values, validation_locale)
    success = code.call(values, success) if code
    success
  end
end

#register_plugin_type(namespace, name, default = nil, locale = nil, &code) ⇒ Object




96
97
98
99
100
101
102
103
104
105
106
# File 'lib/core/mixin/action/registration.rb', line 96

def register_plugin_type(namespace, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_str(name, default, option_locale) do |value|
    success = validate_plugin_types(namespace, name, value, validation_locale)
    success = code.call(value, success) if code
    success
  end
end

#register_plugin_types(namespace, name, default = nil, locale = nil, &code) ⇒ Object




110
111
112
113
114
115
116
117
118
119
120
# File 'lib/core/mixin/action/registration.rb', line 110

def register_plugin_types(namespace, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_array(name, default, option_locale) do |values|
    success = validate_plugin_types(namespace, name, values, validation_locale)
    success = code.call(values, success) if code
    success
  end
end

#register_plugins(namespace, type, name, default = nil, locale = nil, &code) ⇒ Object




166
167
168
169
170
171
172
173
174
175
176
# File 'lib/core/mixin/action/registration.rb', line 166

def register_plugins(namespace, type, name, default = nil, locale = nil, &code)
  name = name.to_sym

  option_locale, validation_locale = split_locales(locale)

  register_array(name, default, option_locale) do |values|
    success = validate_plugins(namespace, type, name, values, validation_locale)
    success = code.call(values, success) if code
    success
  end
end

#register_project(name, default = nil, locale = nil, &code) ⇒ Object




192
193
194
# File 'lib/core/mixin/action/registration.rb', line 192

def register_project(name, default = nil, locale = nil, &code)
  register_plugin(:nucleon, :project, name.to_sym, default, locale, &code)
end

#register_project_provider(name, default = nil, locale = nil, &code) ⇒ Object




180
181
182
# File 'lib/core/mixin/action/registration.rb', line 180

def register_project_provider(name, default = nil, locale = nil, &code)
  register_plugin_provider(:nucleon, :project, name.to_sym, default, locale, &code)
end

#register_project_providers(name, default = nil, locale = nil, &code) ⇒ Object




186
187
188
# File 'lib/core/mixin/action/registration.rb', line 186

def register_project_providers(name, default = nil, locale = nil, &code)
  register_plugin_providers(:nucleon, :project, name.to_sym, default, locale, &code)
end

#register_projects(name, default = nil, locale = nil, &code) ⇒ Object




198
199
200
# File 'lib/core/mixin/action/registration.rb', line 198

def register_projects(name, default = nil, locale = nil, &code)
  register_plugins(:nucleon, :project, name.to_sym, default, locale, &code)
end

#register_str(name, default = '', locale = nil, &code) ⇒ Object




28
29
30
# File 'lib/core/mixin/action/registration.rb', line 28

def register_str(name, default = '', locale = nil, &code)
  register(name, :str, default, locale, &code)
end

#register_translator(name, default = nil, locale = nil, &code) ⇒ Object




216
217
218
# File 'lib/core/mixin/action/registration.rb', line 216

def register_translator(name, default = nil, locale = nil, &code)
  register_plugin(:nucleon, :translator, name.to_sym, default, locale, &code)
end

#register_translator_provider(name, default = nil, locale = nil, &code) ⇒ Object




204
205
206
# File 'lib/core/mixin/action/registration.rb', line 204

def register_translator_provider(name, default = nil, locale = nil, &code)
  register_plugin_provider(:nucleon, :translator, name.to_sym, default, locale, &code)
end

#register_translator_providers(name, default = nil, locale = nil, &code) ⇒ Object




210
211
212
# File 'lib/core/mixin/action/registration.rb', line 210

def register_translator_providers(name, default = nil, locale = nil, &code)
  register_plugin_providers(:nucleon, :translator, name.to_sym, default, locale, &code)
end

#register_translators(name, default = nil, locale = nil, &code) ⇒ Object




222
223
224
# File 'lib/core/mixin/action/registration.rb', line 222

def register_translators(name, default = nil, locale = nil, &code)
  register_plugins(:nucleon, :translators, name.to_sym, default, locale, &code)
end

#split_locales(locale) ⇒ Object


Utilities



321
322
323
324
325
326
327
328
329
330
331
332
# File 'lib/core/mixin/action/registration.rb', line 321

def split_locales(locale)
  option_locale     = nil
  validation_locale = nil

  if locale.is_a?(Array)
    option_locale     = locale[0]
    validation_locale = locale[1] if locale.size > 1
  else
    option_locale     = locale
  end
  [ option_locale, validation_locale ]
end

#validate_directories(dir_names, locale = nil) ⇒ Object




257
258
259
260
261
262
263
264
265
# File 'lib/core/mixin/action/registration.rb', line 257

def validate_directories(dir_names, locale = nil)
  success = true

  array(dir_names).each do |dir_name|
    test    = validate_directory(dir_name, locale)
    success = false unless test
  end
  success
end

#validate_directory(dir_name, locale = nil) ⇒ Object




249
250
251
252
253
# File 'lib/core/mixin/action/registration.rb', line 249

def validate_directory(dir_name, locale = nil)
  success = dir_name.nil? || File.directory?(dir_name)
  warn(locale, { :directory => dir_name }) unless success
  success
end

#validate_file(file_name, locale = nil) ⇒ Object


Validators



229
230
231
232
233
# File 'lib/core/mixin/action/registration.rb', line 229

def validate_file(file_name, locale = nil)
  success = file_name.nil? || File.exists?(file_name)
  warn(locale, { :file => file_name }) unless success
  success
end

#validate_files(file_names, locale = nil) ⇒ Object




237
238
239
240
241
242
243
244
245
# File 'lib/core/mixin/action/registration.rb', line 237

def validate_files(file_names, locale = nil)
  success = true

  array(file_names).each do |file_name|
    test    = validate_file(file_name, locale)
    success = false unless test
  end
  success
end

#validate_plugin_providers(namespace, type, name, values, locale = nil) ⇒ Object




285
286
287
288
289
290
291
292
293
294
295
296
297
# File 'lib/core/mixin/action/registration.rb', line 285

def validate_plugin_providers(namespace, type, name, values, locale = nil)
  loaded_plugin_providers = Nucleon.loaded_plugins(namespace, type).keys
  success                 = true
  locale                  = "validation.#{name}" unless locale

  array(values).each do |value|
    if ! loaded_plugin_providers.include?(value.to_sym)
      warn(locale, { :value => value, :choices => loaded_plugin_providers.join(", ") })
      success = false
    end
  end
  success
end

#validate_plugin_types(namespace, name, values, locale = nil) ⇒ Object




269
270
271
272
273
274
275
276
277
278
279
280
281
# File 'lib/core/mixin/action/registration.rb', line 269

def validate_plugin_types(namespace, name, values, locale = nil)
  loaded_plugin_types = Nucleon.loaded_plugins(namespace).keys
  success             = true
  locale              = "validation.#{name}" unless locale

  array(values).each do |value|
    if ! loaded_plugin_types.include?(value.to_sym)
      warn(locale, { :value => value, :choices => loaded_plugin_types.join(", ") })
      success = false
    end
  end
  success
end

#validate_plugins(namespace, type, name, values, locale = nil) ⇒ Object




301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# File 'lib/core/mixin/action/registration.rb', line 301

def validate_plugins(namespace, type, name, values, locale = nil)
  plugin_class   = Nucleon.plugin_class(namespace, type)
  loaded_plugins = Nucleon.loaded_plugins(namespace, type)
  success        = true
  locale         = "validation.#{name}" unless locale

  array(values).each do |value|
    if info = plugin_class.translate_reference(value)
      if ! loaded_plugins.keys.include?(info[:provider].to_sym)
        warn(locale, Util::Data.merge([ info, { :value => value, :choices => loaded_plugins.keys.join(", ") } ]))
        success = false
      end
    end
  end
  success
end