k_doc 0.0.11 → 0.0.17

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f3a22296c27473f92f9012c2c58c341cd622041f4f54b853cd098e667e2bd861
4
- data.tar.gz: 1a39ea8f5f79db0a05204f18b6e070f2083d1bbd756b17ca24de7e0c77208c43
3
+ metadata.gz: f5d1fec58551c4d2c72de3c9629c0b90847352c38b2d491a021dfce0d72afac6
4
+ data.tar.gz: 7f38b815def0fdcabd801daf8e9e569c36213f306f28781d8956f8bfa12b0be7
5
5
  SHA512:
6
- metadata.gz: d66c94012e5dfed8899f89abdfaf8fd2ae13c3a35b8c31e77b45555d1ce539b66f88ca61fd56b42db6d2c9184c58d6df7cfc14949a40d30e5238e15e9bb5fa42
7
- data.tar.gz: cb190abbb8f67ad7421a72474245ddaaa44901c70d6f4fd09cdfe7b325b759ff353fd30199396680751b2025a9a6f364a1043480c32551b885038dc7d101ad40
6
+ metadata.gz: d2ec5f47f7f5dd3cf295bb430615768149724233451b0aaa09aaecca56752292b167948714ea4f146f8050488a7019a2b90ab7d824c6e540dcfc0de0831af5bb
7
+ data.tar.gz: bc816e70fc04faaf6109e4abe57528b48df868b48bee93eecbc152aa782d22c44a98304eef09f8cbd9bbbbd4ec6ab7dc7ab50b16f73f98b915dae24326928c40
data/lib/k_doc.rb CHANGED
@@ -10,11 +10,11 @@ require 'k_decor'
10
10
 
11
11
  require 'k_doc/version'
12
12
  require 'k_doc/container'
13
- require 'k_doc/data'
13
+ # require 'k_doc/data'
14
+ require 'k_doc/model'
14
15
  require 'k_doc/fake_opinion'
15
16
  require 'k_doc/settings'
16
17
  require 'k_doc/table'
17
- require 'k_doc/util'
18
18
 
19
19
  require 'k_doc/decorators/settings_decorator'
20
20
  require 'k_doc/decorators/table_decorator'
@@ -24,20 +24,19 @@ module KDoc
24
24
  class Error < StandardError; end
25
25
 
26
26
  class << self
27
- # Factory method to create a new data
28
- def data(key = nil, **options, &block)
29
- data = KDoc::Data.new(key, **options, &block)
30
- data.execute_block
31
- data
27
+ # Is this needed
28
+ # Factory method to create a new model
29
+ def model(key = nil, **options, &block)
30
+ model = KDoc::Model.new(key, **options, &block)
31
+ model.execute_block
32
+ model
32
33
  end
33
34
 
34
35
  attr_accessor :opinion
35
- attr_accessor :util
36
36
  attr_accessor :log
37
37
  end
38
38
 
39
39
  KDoc.opinion = KDoc::FakeOpinion.new
40
- KDoc.util = KDoc::Util.new
41
40
  end
42
41
 
43
42
  if ENV['KLUE_DEBUG']&.to_s&.downcase == 'true'
@@ -1,15 +1,30 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDoc
4
- # A container acts a base data object for any data requires tagging such as
4
+ # A data acts a base data object for any data requires tagging such as
5
5
  # unique key, type and namespace.
6
6
  class Container
7
7
  # include KLog::Logging
8
8
 
9
+ # Name of the document (required)
10
+ #
11
+ # Examples: user, account, country
9
12
  attr_reader :key
13
+
14
+ # Type of data
15
+ #
16
+ # Examples by data type
17
+ # :csv, :yaml, :json, :xml
18
+ #
19
+ # Examples by shape of the data in a DSL
20
+ # :entity, :microapp, blueprint
10
21
  attr_reader :type
11
- attr_reader :namespace
12
- attr_reader :project_key
22
+
23
+ attr_writer :data
24
+
25
+ # Move this up to k_manager
26
+ # attr_reader :namespace
27
+ # attr_reader :project_key
13
28
  attr_reader :error
14
29
 
15
30
  # Create container for storing data/documents.
@@ -19,35 +34,20 @@ module KDoc
19
34
  #
20
35
  # @param [Hash] **opts The options
21
36
  # @option opts [String|Symbol] name Name of the container
22
- # @option opts [String|Symbol] type Type of the container, defaults to KDoc:: FakeOpinion.new.default_document_type if not set
37
+ # @option opts [String|Symbol] type Type of the container, defaults to KDoc:: FakeOpinion.new.default_model_type if not set
23
38
  # @option opts [String|Symbol] namespace Namespace that the container belongs to
24
39
  # @option opts [String|Symbol] project_key Project that the container belongs to
25
40
  def initialize(**opts)
26
- @key = opts[:key] || SecureRandom.alphanumeric(8)
27
- @type = opts[:type] || KDoc.opinion.default_document_type
28
- @namespace = opts[:namespace] || ''
29
- @project_key = opts[:project_key] || ''
30
-
31
- # Old name is default_data, wonder if I still need that idea?
32
- # Most documents live within a hash, some tabular documents such as CSV will use an []
33
- # @data = slice_option(:default_data) || {}
41
+ @key = opts[:key] || SecureRandom.alphanumeric(4)
42
+ @type = opts[:type] || ''
34
43
  @data = opts[:data] || {}
35
44
  end
36
45
 
37
- def unique_key
38
- @unique_key ||= KDoc.util.build_unique_key(key, type, namespace, project_key)
39
- end
40
-
41
46
  def debug_header
42
47
  log.kv 'key', key
43
48
  log.kv 'type', type
44
- log.kv 'namespace', namespace
45
- log.kv 'project_key', namespace
46
- log.kv 'error', error
47
49
  end
48
50
 
49
- attr_writer :data
50
-
51
51
  def data
52
52
  @data.clone
53
53
  end
@@ -6,7 +6,7 @@ module KDoc
6
6
  # This is called fake opinion because I have not figured out
7
7
  # how I want to implement this
8
8
  class FakeOpinion
9
- attr_accessor :default_document_type
9
+ attr_accessor :default_model_type
10
10
  attr_accessor :default_settings_key
11
11
  attr_accessor :default_table_key
12
12
 
@@ -15,7 +15,7 @@ module KDoc
15
15
  attr_accessor :table_class
16
16
 
17
17
  def initialize
18
- @default_document_type = :entity
18
+ @default_model_type = :entity
19
19
  @default_settings_key = :settings
20
20
  @default_table_key = :table
21
21
 
@@ -1,10 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDoc
4
- # General purpose data DSL
4
+ # Model is a DSL for modeling general purpose data objects
5
5
  #
6
- # Made up of 0 or more setting groups and table groups
7
- class Data < KDoc::Container
6
+ # A mode can have
7
+ # - 0 or more named setting groups each with their key/value pairs
8
+ # - 0 or more named table groups each with their own columns and rows
9
+ #
10
+ # A settings group without a name will default to name: :settings
11
+ # A table group without a name will default to name: :table
12
+ class Model < KDoc::Container
8
13
  include KLog::Logging
9
14
 
10
15
  # include KType::Error
@@ -17,15 +22,16 @@ module KDoc
17
22
  # Create document
18
23
  #
19
24
  # @param [String|Symbol] name Name of the document
20
- # @param args[0] Type of the document, defaults to KDoc:: FakeOpinion.new.default_document_type if not set
25
+ # @param args[0] Type of the document, defaults to KDoc:: FakeOpinion.new.default_model_type if not set
21
26
  # @param default: Default value (using named params), as above
22
27
  def initialize(key = nil, **options, &block)
23
- super(key: key, type: options[:type], namespace: options[:namespace], project_key: options[:project_key])
28
+ super(key: key, type: options[:type] || KDoc.opinion.default_model_type) # , namespace: options[:namespace], project_key: options[:project_key])
24
29
  initialize_attributes(**options)
25
30
 
26
31
  @block = block if block_given?
27
32
  end
28
33
 
34
+ # NOTE: Can this be moved out of the is object?
29
35
  def execute_block(run_actions: nil)
30
36
  return if @block.nil?
31
37
 
@@ -44,7 +50,7 @@ module KDoc
44
50
  # raise
45
51
  rescue StandardError => e
46
52
  log.error('Standard error in document')
47
- puts "key #{unique_key}"
53
+ # puts "key #{unique_key}"
48
54
  # puts "file #{KUtil.data.console_file_hyperlink(resource.file, resource.file)}"
49
55
  log.error(e.message)
50
56
  @error = e
@@ -54,10 +60,6 @@ module KDoc
54
60
  @run_actions = nil
55
61
  end
56
62
 
57
- def unique_key
58
- @unique_key ||= KDoc.util.build_unique_key(key, type, namespace)
59
- end
60
-
61
63
  def settings(key = nil, **options, &block)
62
64
  options ||= {}
63
65
 
@@ -135,19 +137,17 @@ module KDoc
135
137
  log.o(raw_data_struct)
136
138
  end
137
139
 
138
- # rubocop:disable Metrics/AbcSize
139
140
  def debug_header
140
141
  log.heading self.class.name
141
142
  log.kv 'key', key
142
143
  log.kv 'type', type
143
- log.kv 'namespace', namespace
144
+ # log.kv 'namespace', namespace
144
145
  log.kv 'error', error
145
146
 
146
147
  debug_header_keys
147
148
 
148
149
  log.line
149
150
  end
150
- # rubocop:enable Metrics/AbcSize
151
151
 
152
152
  def debug_header_keys
153
153
  options&.keys&.reject { |k| k == :namespace }&.each do |key|
@@ -159,6 +159,7 @@ module KDoc
159
159
 
160
160
  def initialize_attributes(**options)
161
161
  @options = options || {}
162
+ # Is parent a part of model, or is it part of k_manager::document_taggable
162
163
  @parent = slice_option(:parent)
163
164
 
164
165
  # Most documents live within a hash, some tabular documents such as CSV will use an []
data/lib/k_doc/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module KDoc
4
- VERSION = '0.0.11'
4
+ VERSION = '0.0.17'
5
5
  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.11
4
+ version: 0.0.17
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-04-21 00:00:00.000000000 Z
11
+ date: 2021-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -111,13 +111,12 @@ files:
111
111
  - k_doc.gemspec
112
112
  - lib/k_doc.rb
113
113
  - lib/k_doc/container.rb
114
- - lib/k_doc/data.rb
115
114
  - lib/k_doc/decorators/settings_decorator.rb
116
115
  - lib/k_doc/decorators/table_decorator.rb
117
116
  - lib/k_doc/fake_opinion.rb
117
+ - lib/k_doc/model.rb
118
118
  - lib/k_doc/settings.rb
119
119
  - lib/k_doc/table.rb
120
- - lib/k_doc/util.rb
121
120
  - lib/k_doc/version.rb
122
121
  homepage: http://appydave.com/gems/k-doc
123
122
  licenses:
data/lib/k_doc/util.rb DELETED
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module KDoc
4
- # Utility helper methods for KDoc
5
- class Util
6
- # Build a unique key so that resources of the same key do not conflict with
7
- # one another across projects, namespaces or types
8
- #
9
- # @param [String] param_name Param description
10
- def build_unique_key(key, type = nil, namespace = nil, project_key = nil)
11
- raise KDoc::Error, 'key is required when generating unique key' if key.nil? || key.empty?
12
-
13
- type ||= KDoc.opinion.default_document_type
14
-
15
- keys = [project_key, namespace, key, type].reject { |k| k.nil? || k == '' }
16
-
17
- keys.join('_')
18
- end
19
- end
20
- end