bblib 0.3.0 → 0.4.1

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 (62) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +11 -10
  3. data/.rspec +2 -2
  4. data/.travis.yml +4 -4
  5. data/CODE_OF_CONDUCT.md +13 -13
  6. data/Gemfile +4 -4
  7. data/LICENSE.txt +21 -21
  8. data/README.md +247 -757
  9. data/Rakefile +6 -6
  10. data/bblib.gemspec +34 -34
  11. data/bin/console +14 -14
  12. data/bin/setup +7 -7
  13. data/lib/array/bbarray.rb +71 -29
  14. data/lib/bblib.rb +12 -12
  15. data/lib/bblib/version.rb +3 -3
  16. data/lib/class/effortless.rb +23 -0
  17. data/lib/error/abstract.rb +3 -0
  18. data/lib/file/bbfile.rb +93 -52
  19. data/lib/hash/bbhash.rb +130 -46
  20. data/lib/hash/hash_struct.rb +24 -0
  21. data/lib/hash/tree_hash.rb +364 -0
  22. data/lib/hash_path/hash_path.rb +210 -0
  23. data/lib/hash_path/part.rb +83 -0
  24. data/lib/hash_path/path_hash.rb +84 -0
  25. data/lib/hash_path/proc.rb +93 -0
  26. data/lib/hash_path/processors.rb +239 -0
  27. data/lib/html/bbhtml.rb +2 -0
  28. data/lib/html/builder.rb +34 -0
  29. data/lib/html/tag.rb +49 -0
  30. data/lib/logging/bblogging.rb +42 -0
  31. data/lib/mixins/attrs.rb +422 -0
  32. data/lib/mixins/bbmixins.rb +7 -0
  33. data/lib/mixins/bridge.rb +17 -0
  34. data/lib/mixins/family_tree.rb +41 -0
  35. data/lib/mixins/hooks.rb +139 -0
  36. data/lib/mixins/logger.rb +31 -0
  37. data/lib/mixins/serializer.rb +71 -0
  38. data/lib/mixins/simple_init.rb +160 -0
  39. data/lib/number/bbnumber.rb +15 -7
  40. data/lib/object/bbobject.rb +46 -19
  41. data/lib/opal/bbopal.rb +0 -4
  42. data/lib/os/bbos.rb +24 -16
  43. data/lib/os/bbsys.rb +60 -43
  44. data/lib/string/bbstring.rb +165 -66
  45. data/lib/string/cases.rb +37 -29
  46. data/lib/string/fuzzy_matcher.rb +48 -50
  47. data/lib/string/matching.rb +43 -30
  48. data/lib/string/pluralization.rb +156 -0
  49. data/lib/string/regexp.rb +45 -0
  50. data/lib/string/roman.rb +17 -30
  51. data/lib/system/bbsystem.rb +42 -0
  52. data/lib/time/bbtime.rb +79 -58
  53. data/lib/time/cron.rb +174 -132
  54. data/lib/time/task_timer.rb +86 -70
  55. metadata +27 -10
  56. data/lib/gem/bbgem.rb +0 -28
  57. data/lib/hash/hash_path.rb +0 -344
  58. data/lib/hash/hash_path_proc.rb +0 -256
  59. data/lib/hash/path_hash.rb +0 -81
  60. data/lib/object/attr.rb +0 -182
  61. data/lib/object/hooks.rb +0 -69
  62. data/lib/object/lazy_class.rb +0 -73
@@ -1,69 +0,0 @@
1
- module BBLib::Hooks
2
-
3
- def method_added name
4
- before_hooks_for(name).each do |hook|
5
- next if before_hooked_methods[hook] && before_hooked_methods[hook].include?(name)
6
- add_before_hook(name, hook)
7
- end
8
- after_hooks_for(name).each do |hook|
9
- next if after_hooked_methods[hook] && after_hooked_methods[hook].include?(name)
10
- add_after_hook(name, hook)
11
- end
12
- end
13
-
14
- def before hook, *methods
15
- methods.each{ |m| before_hooks[hook] = methods }
16
- end
17
-
18
- def before_hooks
19
- @before_hooks ||= {}
20
- end
21
-
22
- def before_hooked_methods
23
- @before_hooked_methods ||= {}
24
- end
25
-
26
- def before_hooks_for name
27
- before_hooks.map{ |n, m| m.include?(name)? n : nil }.reject(&:nil?)
28
- end
29
-
30
- def add_before_hook method, hook
31
- before_hooked_methods[hook] = Array.new unless before_hooked_methods[hook]
32
- before_hooked_methods[hook] += [method]
33
- original = instance_method(method)
34
- define_method(method) do |*args, &block|
35
- # puts "ARGS: #{args}"
36
- method(hook).call
37
- original.bind(self).call(*args, &block)
38
- end
39
- end
40
-
41
- def after hook, *methods
42
- methods.each{ |m| after_hooks[hook] = methods }
43
- end
44
-
45
- def after_hooks
46
- @after_hooks ||= {}
47
- end
48
-
49
- def after_hooked_methods
50
- @after_hooked_methods ||= {}
51
- end
52
-
53
- def after_hooks_for name
54
- after_hooks.map{ |n, m| m.include?(name) ? n : nil }.reject(&:nil?)
55
- end
56
-
57
- def add_after_hook method, hook
58
- after_hooked_methods[hook] = Array.new unless after_hooked_methods[hook]
59
- after_hooked_methods[hook] += [method]
60
- original = instance_method(method)
61
-
62
- define_method(method) do |*args, &block|
63
- rtr = original.bind(self).call(*args, &block)
64
- method(hook).call
65
- rtr
66
- end
67
- end
68
-
69
- end
@@ -1,73 +0,0 @@
1
-
2
- module BBLib
3
-
4
- class LazyClass
5
- extend Hooks
6
- extend Attr
7
- attr_reader :_serialize_fields
8
-
9
- def initialize *args
10
- _pre_setup
11
- lazy_setup
12
- _lazy_init(*args)
13
- end
14
-
15
- def serialize
16
- _serialize_fields.map do |name, h|
17
- value = send(h[:method])
18
- if !h[:always] && value == h[:ignore]
19
- nil
20
- else
21
- [ name, value ]
22
- end
23
- end.reject(&:nil?).to_h
24
- end
25
-
26
- protected
27
-
28
- def lazy_setup
29
- # Instantiate necessary variables here
30
- end
31
-
32
- def _lazy_init *args
33
- BBLib::named_args(*args).each do |k,v|
34
- if self.respond_to?("#{k}=".to_sym)
35
- send("#{k}=".to_sym, v)
36
- end
37
- end
38
- lazy_init *args
39
- custom_lazy_init BBLib::named_args(*args), *args
40
- end
41
-
42
- def _pre_setup
43
- self.methods.each do |m|
44
- if m.to_s.start_with?('__reset_')
45
- send(m) rescue nil
46
- end
47
- end
48
- end
49
-
50
- def lazy_init *args
51
- # Define custom initialization here...
52
- end
53
-
54
- def custom_lazy_init *args
55
- # Left in for legacy support...don't use this!
56
- end
57
-
58
- def serialize_method name, method = nil, ignore: nil, always: false
59
- return if method == :serialize || name == :serialize && method.nil?
60
- _serialize_fields[name.to_sym] = {
61
- method: (method.nil? ? name.to_sym : method.to_sym),
62
- ignore: ignore,
63
- always: always
64
- }
65
- end
66
-
67
- def _serialize_fields
68
- @_serialize_fields ||= Hash.new
69
- end
70
-
71
- end
72
-
73
- end