k_doc 0.0.24 → 0.0.28

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: 62acce8bfac2c242082dd6cf050db2d7e6c535bc6af229f50b4185aec7573261
4
- data.tar.gz: 23b23c0dffa5da8de05f88c0f470aa63dbdfe3f734582872debf0a74edd1c8fc
3
+ metadata.gz: f303cce0d48fa08ea50ce2e14a4c5d935fe927c2e634c03db0f2d909cb6a01a6
4
+ data.tar.gz: 5bffef8ae688894faf79e73c6fc04725315793d75795d784a3875563c7e6b1be
5
5
  SHA512:
6
- metadata.gz: 3762d2ab76f5d4128a2330ea7ad84db2234bea4a56bec313ade497691a46df0f0e20aec4445268647b49d2d68279c3c5730d0ebdecd0b2dba0e48d15b7d77ded
7
- data.tar.gz: 8e9054976e5e0fbe40e9a27cb3e5244cbd451b5d67c30246d874348b75fd17877774ac0dd819da017db8a3c02439e7fe70aa1fee9887c292d4d0c8997187fad6
6
+ metadata.gz: def580541db16a31f6c80759f7387da8a38f4e1ffbf4545d65ae14da72498fcc86e274b207931347937f55b4d78b9009443f6321b74a8b1a5224cc74127c28c4
7
+ data.tar.gz: e4cddb3891b5d4bc785833aa0d9de6efc19fd8d58f1525b99ca20b13407aa0a509ac4808fd70604093d9d7c67d0ffa64b9083af20ec45fba8a052dbd3dd29a5b
@@ -180,6 +180,6 @@ class Director
180
180
 
181
181
  return if @builder
182
182
 
183
- @builder = KBuilder::BaseBuilder.init(KBuilder.configuration(opts[:builder_config_name]))
183
+ @builder = KBuilder::BaseBuilder.init(KConfig.configuration(opts[:builder_config_name]))
184
184
  end
185
185
  end
@@ -1,5 +1,5 @@
1
1
  KBuilder.reset(:gem)
2
- KBuilder.configure(:gem) do |config|
2
+ KConfig.configure(:gem) do |config|
3
3
  # config.template_folders.add(:global , '~/dev/kgems/k_templates/definitions/genesis')
4
4
  config.target_folders.add(:root , File.expand_path('..', Dir.getwd))
5
5
  config.target_folders.add(:lib , :root, 'lib', 'k_doc')
@@ -7,14 +7,14 @@ KBuilder.configure(:gem) do |config|
7
7
  end
8
8
 
9
9
  KBuilder.reset(:design_patterns)
10
- KBuilder.configure(:design_patterns) do |config|
10
+ KConfig.configure(:design_patterns) do |config|
11
11
  config.template_folders.add(:global , '~/dev/kgems/k_templates/templates/ruby_design_patterns')
12
12
  config.target_folders.add(:root , File.expand_path('..', Dir.getwd))
13
13
  config.target_folders.add(:lib , :root, 'lib', 'k_doc')
14
14
  config.target_folders.add(:spec , :root, 'spec', 'k_doc')
15
15
  end
16
16
 
17
- # KBuilder.configuration(:gem).debug
17
+ # KConfig.configuration(:gem).debug
18
18
 
19
19
  # def builder
20
20
  # @builder ||= KBuilder::BaseBuilder.init
data/.rubocop.yml CHANGED
@@ -44,15 +44,19 @@ Layout/LineLength:
44
44
  Lint/UnusedMethodArgument:
45
45
  AllowUnusedKeywordArguments: true
46
46
 
47
- Style/Documentation:
47
+ Style/AccessorGrouping:
48
48
  Enabled: false
49
-
50
49
  Style/BlockComments:
51
50
  Enabled: false
52
51
  Include:
53
52
  - "**/spec/*"
54
-
55
- # My Preferences - Start
53
+ Style/Documentation:
54
+ Enabled: false
55
+ Style/EmptyMethod:
56
+ Exclude:
57
+ - "**/spec/**/*"
58
+ Style/OpenStructUse:
59
+ Enabled: false
56
60
  Metrics/ClassLength:
57
61
  Enabled: false
58
62
  Metrics/ModuleLength:
@@ -63,23 +67,14 @@ Naming/MemoizedInstanceVariableName:
63
67
  Naming/VariableNumber:
64
68
  Exclude:
65
69
  - "**/spec/**/*"
66
- Style/EmptyMethod:
67
- Exclude:
68
- - "**/spec/**/*"
69
70
  Metrics/ParameterLists:
70
71
  Exclude:
71
72
  - "**/spec/**/*"
72
73
  Layout/EmptyLineBetweenDefs:
73
74
  Exclude:
74
75
  - "**/spec/**/*"
75
-
76
76
  Lint/AmbiguousBlockAssociation:
77
77
  Exclude:
78
78
  - "**/spec/**/*"
79
-
80
- Style/AccessorGrouping:
81
- Enabled: false
82
-
83
79
  Layout/SpaceBeforeComma:
84
80
  Enabled: false
85
- # My Preferences - End
data/README.md CHANGED
@@ -52,17 +52,6 @@ Checkout the repo
52
52
  git clone klueless-io/k_doc
53
53
  ```
54
54
 
55
- After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests.
56
-
57
- You can also run `bin/console` for an interactive prompt that will allow you to experiment.
58
-
59
- ```bash
60
- bin/console
61
-
62
- Aaa::Bbb::Program.execute()
63
- # => ""
64
- ```
65
-
66
55
  `k_doc` is setup with Guard, run `guard`, this will watch development file changes and run tests automatically, if successful, it will then run rubocop for style quality.
67
56
 
68
57
  To release a new version, update the version number in `version.rb`, build the gem and push the `.gem` file to [rubygems.org](https://rubygems.org).
@@ -10,6 +10,10 @@ module KDoc
10
10
  include KDoc::Datum
11
11
  include KDoc::BlockProcessor
12
12
 
13
+ # OpenStruct to be populated with context data, this can be used inside the on_init
14
+ attr_reader :context
15
+
16
+ # Opts that are passed to the container. Some options will be removed when evaluated by different plugins (Taggable, BlockProcessor)
13
17
  attr_reader :opts
14
18
 
15
19
  # TODO: Owner/Owned need to be in a module and tested
@@ -20,6 +24,7 @@ module KDoc
20
24
  end
21
25
 
22
26
  def initialize(**opts, &block)
27
+ @context = OpenStruct.new
23
28
  @opts = opts
24
29
 
25
30
  initialize_tag(opts)
@@ -35,8 +40,13 @@ module KDoc
35
40
  @default_data_type ||= Hash
36
41
  end
37
42
 
43
+ def os(**opts)
44
+ OpenStruct.new(opts)
45
+ end
46
+
38
47
  def debug
39
- debug_container
48
+ debug_taggable
49
+ debug_block_processor
40
50
  debug_errors
41
51
  end
42
52
 
@@ -6,20 +6,51 @@ module KDoc
6
6
  # Rename: BlockProcessor
7
7
  module BlockProcessor
8
8
  attr_accessor :block
9
+ attr_accessor :block_state
9
10
 
10
- def initialize_block(_opts, &block)
11
+ # Proc/Handler to be called before evaluating when importing data
12
+ attr_reader :on_init
13
+
14
+ def initialize_block(opts, &block)
11
15
  @block = block if block_given?
16
+ @block_state = :new
17
+ @on_init = opts.delete(:on_init)
18
+ end
19
+
20
+ def evaluated?
21
+ @block_state == :evaluated || @block_state == :actioned
22
+ end
23
+
24
+ def actioned?
25
+ @block_state == :actioned
12
26
  end
13
27
 
14
28
  def execute_block(run_actions: nil)
29
+ run_on_init
30
+
31
+ # return unless dependencies_met?
32
+
15
33
  eval_block
16
34
  run_on_action if run_actions
17
35
  end
18
36
 
37
+ def run_on_init
38
+ instance_eval(&on_init) if on_init
39
+
40
+ @block_state = :initialized
41
+ rescue StandardError => e
42
+ log.error('Standard error in document on_init')
43
+ # puts "key #{unique_key}"
44
+ # puts "file #{KUtil.data.console_file_hyperlink(resource.file, resource.file)}"
45
+ log.error(e.message)
46
+ @error = e
47
+ raise
48
+ end
49
+
19
50
  def eval_block
20
- return if @block.nil?
51
+ instance_eval(&block) if block
21
52
 
22
- instance_eval(&@block)
53
+ @block_state = :evaluated
23
54
  rescue StandardError => e
24
55
  log.error('Standard error in document')
25
56
  # puts "key #{unique_key}"
@@ -30,9 +61,12 @@ module KDoc
30
61
  end
31
62
 
32
63
  def run_on_action
33
- return if @block.nil?
64
+ return unless block
34
65
 
35
- on_action if respond_to?(:on_action)
66
+ if respond_to?(:on_action)
67
+ on_action
68
+ @block_state = :actioned
69
+ end
36
70
  rescue StandardError => e
37
71
  log.error('Standard error while running actions')
38
72
  # puts "key #{unique_key}"
@@ -41,5 +75,11 @@ module KDoc
41
75
  @error = e
42
76
  raise
43
77
  end
78
+
79
+ def debug_block_processor
80
+ log.kv 'block_state', block_state , debug_pad_size if respond_to?(:block_state)
81
+ log.kv 'evaluated' , evaluated? , debug_pad_size if respond_to?(:evaluated?)
82
+ log.kv 'actioned' , actioned? , debug_pad_size if respond_to?(:actioned?)
83
+ end
44
84
  end
45
85
  end
@@ -67,28 +67,10 @@ module KDoc
67
67
  @namespace = ns.is_a?(Array) ? ns : [ns]
68
68
  end
69
69
 
70
- # # Internal data object
71
- # def data
72
- # @data ||= @tag_options.delete(:data) || @tag_options.delete(:default_data) || default_data_value
73
- # # Settings and Table on Model needed access to @data for modification, I don't think this should be a clone
74
- # # never return the original data object, but at the same time
75
- # # do not re-clone it every time this accessor is called.
76
- # # @clone_data ||= @data.clone
77
- # end
78
-
79
- # Implement in container
80
- # def default_container_type
81
- # :container
82
- # end
83
-
84
- # def default_data_value
85
- # {}
86
- # end
87
-
88
70
  protected
89
71
 
90
72
  # rubocop:disable Metrics/AbcSize
91
- def debug_container
73
+ def debug_taggable
92
74
  log.kv 'tag' , tag , debug_pad_size
93
75
  log.kv 'project' , project , debug_pad_size unless project.nil? || project.empty?
94
76
  log.kv 'namespace' , namespace , debug_pad_size unless namespace.nil? || namespace.empty?
data/lib/k_doc/model.rb CHANGED
@@ -23,6 +23,12 @@ module KDoc
23
23
 
24
24
  # Need to look at Director as an alternative to this technique
25
25
  def settings(key = nil, **setting_opts, &block)
26
+ # TODO: add test
27
+ if block.nil?
28
+ log.warn 'You cannot call settings without a block. Did you mean to call data[:settings] or odata.settings?'
29
+ return
30
+ end
31
+
26
32
  setting_opts ||= {}
27
33
 
28
34
  setting_opts = {}.merge(opts) # Container options
@@ -34,6 +40,11 @@ module KDoc
34
40
  end
35
41
 
36
42
  def table(key = :table, **opts, &block)
43
+ if block.nil?
44
+ log.warn 'You cannot call table without a block. Did you mean to call data[:table] or odata.table?'
45
+ return
46
+ end
47
+
37
48
  # NEED to add support for run_decorators I think
38
49
  opts.merge(parent: self)
39
50
  table_instance(data, key, **opts, &block)
@@ -115,7 +126,8 @@ module KDoc
115
126
 
116
127
  def debug_header
117
128
  log.heading self.class.name
118
- debug_container
129
+ debug_taggable
130
+ debug_block_processor
119
131
  debug_header_keys
120
132
 
121
133
  log.line
@@ -33,6 +33,10 @@ module KDoc
33
33
  end
34
34
  end
35
35
 
36
+ def imports
37
+ parent.imports
38
+ end
39
+
36
40
  # Return these settings which are attached to a data container using :key
37
41
  # internal_data is a bad name, but it is unlikely to interfere with any setting names
38
42
  # Maybe I rename this to raw_data
data/lib/k_doc/table.rb CHANGED
@@ -20,6 +20,10 @@ module KDoc
20
20
  run_decorators(:update_rows)
21
21
  end
22
22
 
23
+ def imports
24
+ parent.imports
25
+ end
26
+
23
27
  # Pass fields in using the following format
24
28
  # fields :name, f(:type, :string), :db_type
25
29
  #
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.24'
4
+ VERSION = '0.0.28'
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.24
4
+ version: 0.0.28
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-12-20 00:00:00.000000000 Z
11
+ date: 2022-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport