k_doc 0.0.18 → 0.0.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,63 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'yaml'
4
+
5
+ module KDoc
6
+ # YamlDoc is a DSL for modeling YAML data objects
7
+ class YamlDoc < KDoc::Container
8
+ attr_reader :file
9
+
10
+ # Create YAML document
11
+ #
12
+ # @param [String|Symbol] name Name of the document
13
+ # @param args[0] Type of the document, defaults to KDoc:: FakeOpinion.new.default_csv_type if not set
14
+ # @param default: Default value (using named params), as above
15
+ def initialize(key = nil, **opts, &block)
16
+ super(**{ key: key }.merge(opts))
17
+
18
+ initialize_file
19
+
20
+ @block = block if block_given?
21
+ end
22
+
23
+ # Load data from file
24
+ #
25
+ # @param [Symbol] load_action The load_action to take if data has already been loaded
26
+ # @param [:once] load_action :once will load the data from content source on first try only
27
+ # @param [:reload] load_action :reload will reload from content source each time
28
+ # @param [Symbol] data_action The data_action to take when setting data, defaults to :replace
29
+ # @param [:replace] data_action :replace will replace the existing data instance with the incoming data value
30
+ # @param [:append] data_action :append will keep existing data and then new value data over the top
31
+ def load(load_action: :once, data_action: :replace)
32
+ return if load_action == :once && loaded?
33
+
34
+ content = File.read(file)
35
+ hash = YAML.safe_load(content)
36
+
37
+ set_data(hash, data_action: data_action)
38
+
39
+ @loaded = true
40
+
41
+ log_any_messages
42
+ end
43
+
44
+ def loaded?
45
+ @loaded
46
+ end
47
+
48
+ private
49
+
50
+ def initialize_file
51
+ @file ||= opts.delete(:file) || ''
52
+ @loaded = false
53
+ end
54
+
55
+ def default_data_type
56
+ Hash
57
+ end
58
+
59
+ def default_container_type
60
+ :yaml
61
+ end
62
+ end
63
+ end
data/lib/k_doc.rb CHANGED
@@ -3,14 +3,24 @@
3
3
  require 'securerandom'
4
4
 
5
5
  require 'table_print'
6
+ require 'forwardable'
6
7
  require 'k_log'
7
8
  require 'k_type'
8
9
  require 'k_util'
9
10
  require 'k_decor'
10
11
 
11
12
  require 'k_doc/version'
13
+ require 'k_doc/mixins/guarded'
14
+ require 'k_doc/mixins/taggable'
15
+ require 'k_doc/mixins/datum'
16
+ require 'k_doc/mixins/block_processor'
17
+ require 'k_doc/mixins/composable_components'
12
18
  require 'k_doc/container'
13
19
  # require 'k_doc/data'
20
+ require 'k_doc/action'
21
+ require 'k_doc/csv_doc'
22
+ require 'k_doc/json_doc'
23
+ require 'k_doc/yaml_doc'
14
24
  require 'k_doc/model'
15
25
  require 'k_doc/fake_opinion'
16
26
  require 'k_doc/settings'
@@ -24,14 +34,49 @@ module KDoc
24
34
  class Error < StandardError; end
25
35
 
26
36
  class << self
27
- # Is this needed
28
- # Factory method to create a new model
29
37
  def model(key = nil, **options, &block)
30
38
  model = KDoc::Model.new(key, **options, &block)
31
39
  model.execute_block
32
40
  model
33
41
  end
34
42
 
43
+ # These need to be registerable
44
+ def document(key = nil, **options, &block)
45
+ model(key, **{ type: :document }.merge(**options), &block)
46
+ end
47
+
48
+ def bootstrap(key = nil, **options, &block)
49
+ model(key, **{ type: :bootstrap }.merge(**options), &block)
50
+ end
51
+
52
+ def app_settings(key = nil, **options, &block)
53
+ model(key, **{ type: :app_settings }.merge(**options), &block)
54
+ end
55
+
56
+ def action(key = nil, **options, &block)
57
+ doc = KDoc::Action.new(key, **options, &block)
58
+ doc.execute_block
59
+ doc
60
+ end
61
+
62
+ def csv(key = nil, **options, &block)
63
+ doc = KDoc::CsvDoc.new(key, **options, &block)
64
+ doc.execute_block
65
+ doc
66
+ end
67
+
68
+ def json(key = nil, **options, &block)
69
+ doc = KDoc::JsonDoc.new(key, **options, &block)
70
+ doc.execute_block
71
+ doc
72
+ end
73
+
74
+ def yaml(key = nil, **options, &block)
75
+ doc = KDoc::YamlDoc.new(key, **options, &block)
76
+ doc.execute_block
77
+ doc
78
+ end
79
+
35
80
  attr_accessor :opinion
36
81
  attr_accessor :log
37
82
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: k_doc
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.18
4
+ version: 0.0.24
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-05-20 00:00:00.000000000 Z
11
+ date: 2021-12-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -88,6 +88,15 @@ executables: []
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
+ - ".builders/directors/_.rb"
92
+ - ".builders/directors/build_actions.rb"
93
+ - ".builders/directors/design_pattern_director.rb"
94
+ - ".builders/directors/director.rb"
95
+ - ".builders/directors/klue_director.rb"
96
+ - ".builders/initializers/_.rb"
97
+ - ".builders/initializers/configure_builder.rb"
98
+ - ".builders/initializers/handlebars_helpers.rb"
99
+ - ".builders/setup.rb"
91
100
  - ".github/workflows/main.yml"
92
101
  - ".gitignore"
93
102
  - ".rspec"
@@ -110,21 +119,29 @@ files:
110
119
  - hooks/update-version
111
120
  - k_doc.gemspec
112
121
  - lib/k_doc.rb
122
+ - lib/k_doc/action.rb
113
123
  - lib/k_doc/container.rb
124
+ - lib/k_doc/csv_doc.rb
114
125
  - lib/k_doc/decorators/settings_decorator.rb
115
126
  - lib/k_doc/decorators/table_decorator.rb
116
127
  - lib/k_doc/fake_opinion.rb
128
+ - lib/k_doc/json_doc.rb
129
+ - lib/k_doc/mixins/block_processor.rb
130
+ - lib/k_doc/mixins/composable_components.rb
131
+ - lib/k_doc/mixins/datum.rb
132
+ - lib/k_doc/mixins/guarded.rb
133
+ - lib/k_doc/mixins/taggable.rb
117
134
  - lib/k_doc/model.rb
135
+ - lib/k_doc/model_backup.rb
118
136
  - lib/k_doc/settings.rb
119
137
  - lib/k_doc/table.rb
120
138
  - lib/k_doc/version.rb
139
+ - lib/k_doc/yaml_doc.rb
121
140
  homepage: http://appydave.com/gems/k-doc
122
141
  licenses:
123
142
  - MIT
124
143
  metadata:
125
- homepage_uri: http://appydave.com/gems/k-doc
126
- source_code_uri: https://github.com/klueless-io/k_doc
127
- changelog_uri: https://github.com/klueless-io/k_doc/commits/master
144
+ rubygems_mfa_required: 'true'
128
145
  post_install_message:
129
146
  rdoc_options: []
130
147
  require_paths:
@@ -140,7 +157,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
140
157
  - !ruby/object:Gem::Version
141
158
  version: '0'
142
159
  requirements: []
143
- rubygems_version: 3.2.7
160
+ rubygems_version: 3.2.33
144
161
  signing_key:
145
162
  specification_version: 4
146
163
  summary: KDoc provides a document in the form a DSL that contains flexible key/value