tailwind_dsl 0.0.13 → 0.0.15

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: 86fb67e259cee179a6eee1454ec670b68d5c88f03e67b8074fab845116913dc2
4
- data.tar.gz: dfbb4c75a44d45bb92715642d27b94f3de509914e1d7701c16414390157a6e48
3
+ metadata.gz: e6646b23144a973701ff3a0357cdf6eb27fcc34e26690d2fdbcd77abf1b4767b
4
+ data.tar.gz: 1930985fae4778a5d7576ba843f2f727c634c14802fa3c572d0513df5e2eb3f3
5
5
  SHA512:
6
- metadata.gz: f5ac166f49be7f7f61ccb0b1481e55f678a7a37b721d63449efbdb187e9a45000c553169664df2d8d3343c3c9a62f29f9867ff3a439eecb0309e5a18d1481ddf
7
- data.tar.gz: 4841cdcf0af2012c18c356399ab94f2e6e2703dc12ec9af365282b5f07c95b137c2411db82d4e7ab326212cb0786e3ce962fb7094ca5c54005a9d801f551477e
6
+ metadata.gz: a6ccea6907b5a4a1ff3cdc20fa20d0ce6dc814890d1cc4524e2fba9b124b85d599c5ae1046de94ddf10b20bde5292ddf79cdd7f0d0c38d6fa117a0bf7bb73ee1
7
+ data.tar.gz: 8feb59692ddaf59ffe373c1492e08e45dfe546ab63bfc09554afe47322975ad0fb8de5ec91046bb506b0ad303543157a1c0e86c0c5098db85098d12d059ebfc5
data/.builders/boot.rb CHANGED
@@ -31,6 +31,7 @@ KConfig.configure(CONFIG_KEY) do |config|
31
31
  config.target_folders.add(:builder , builder_folder)
32
32
  config.target_folders.add(:data , base_folder, '.data')
33
33
  config.target_folders.add(:components , base_folder, '.components')
34
+ config.target_folders.add(:component_models , base_folder, '.component_models')
34
35
 
35
36
  config.target_folders.add(:template_merakiui , global_template, 'tailwind', 'merakiui')
36
37
  config.target_folders.add(:template_devdojo , global_template, 'tailwind', 'devdojo')
@@ -11,21 +11,31 @@ KManager.action :utilities do
11
11
  cd(:data)
12
12
 
13
13
  # Raw components are source HTML/Tailwind files that have embedded information such as tailwind.config.js and usage instructions
14
- raw_component_path = File.expand_path('~/dev/kgems/k_templates/templates/tailwind')
14
+ source_component_path = File.expand_path('~/dev/kgems/k_templates/templates/tailwind')
15
15
 
16
16
  # Target components are the processed components that are ready to be consumed by the TailwindDSL
17
- component_folder = k_builder.target_folders.get(:components)
17
+ target_component_path = k_builder.target_folders.get(:components)
18
+
19
+ # The component data shapes are reflected model based on the data inside of a HTML templates
20
+ target_component_model_path = k_builder.target_folders.get(:component_models)
18
21
 
19
- uikit = helpers.build_design_systems(raw_component_path)
20
- json = JSON.pretty_generate(uikit.to_h)
22
+ # Builds the design_system.json by reading all the HTML templates for every UIKit found the source_component_path
23
+ uikit = helpers.build_design_systems(source_component_path)
21
24
 
22
- add('design_system.json', content: json)
25
+ add('design_system.json', content: JSON.pretty_generate(uikit.to_h))
23
26
 
24
- helpers.generate_components(uikit, raw_component_path, component_folder, reset_root_path: false)
27
+ # Separate clean and raw components, tailwind configuration, settings into their own folders
28
+ component_generator = helpers.generate_components(uikit, source_component_path, target_component_path, reset_root_path: false)
29
+ components = component_generator.components
30
+
31
+ # Use GPT3 to extract component models in supervised fashion
32
+ helpers.extract_next_component_model(components, target_component_model_path, batch_size: 1, use_prompt: true, filter_design_system: 'tui')
33
+ # puts target_component_path
34
+ # /Users/davidcruwys/dev/kgems/tailwind_dsl/.components
25
35
 
26
36
  # Goals
27
37
  # - Generate a Tailwind component complete design system so that I can see both the component plus the original source code
28
- # There should be a deep hierarchy of folders and files in a menu structure
38
+ # [✔️] There should be a deep hierarchy of folders and files in a menu structure
29
39
  # When you click on a menu item, there should be a preview of the component
30
40
  # The menus should be collapsible
31
41
  # The menus should be searchable
@@ -39,21 +49,32 @@ KManager.action :utilities do
39
49
 
40
50
  end
41
51
 
42
- def build_design_systems(raw_component_path)
52
+ def build_design_systems(source_component_path)
43
53
  director = TailwindDsl::Etl::RawComponents::Director.new
44
54
 
45
- director.add_design_system(File.join(raw_component_path, 'tui'))
46
- # director.add_design_system(File.join(raw_component_path, 'codepen'))
47
- # director.add_design_system(File.join(raw_component_path, 'devdojo'))
48
- # director.add_design_system(File.join(raw_component_path, 'merakiui'))
49
- # director.add_design_system(File.join(raw_component_path, 'noq'))
50
- # director.add_design_system(File.join(raw_component_path, 'starter-kit'))
55
+ director.add_design_system(File.join(source_component_path, 'tui'))
56
+ # director.add_design_system(File.join(source_component_path, 'codepen'))
57
+ # director.add_design_system(File.join(source_component_path, 'devdojo'))
58
+ # director.add_design_system(File.join(source_component_path, 'merakiui'))
59
+ # director.add_design_system(File.join(source_component_path, 'noq'))
60
+ # director.add_design_system(File.join(source_component_path, 'starter-kit'))
51
61
  director.uikit
52
62
  end
53
63
 
54
- def generate_components(uikit, raw_component_path, target_folder, reset_root_path: false)
55
- generator = TailwindDsl::Etl::ComponentStructures::Generator.new(uikit, raw_component_path, target_folder, reset_root_path: reset_root_path)
64
+ def generate_components(uikit, source_component_path, target_folder, reset_root_path: false)
65
+ generator = TailwindDsl::Etl::ComponentStructures::Generator.new(uikit, source_component_path, target_folder, reset_root_path: reset_root_path)
56
66
  generator.generate
67
+ generator
68
+ end
69
+
70
+ # Extracts the next component model using GPT3
71
+ #
72
+ # This needs to be supervised and verified, so it will only do a few models at a time
73
+ def extract_next_component_model(components, target_folder, batch_size: 1, use_prompt: false, filter_design_system: nil)
74
+ puts target_folder
75
+ extractor = TailwindDsl::Etl::ComponentModels::Extractor.new(components, target_folder, batch_size: batch_size, use_prompt: use_prompt, filter_design_system: filter_design_system)
76
+ extractor.extract
57
77
  end
58
78
  end
79
+
59
80
  KManager.opts.sleep = 2
data/CHANGELOG.md CHANGED
@@ -1,3 +1,19 @@
1
+ ## [0.0.14](https://github.com/klueless-io/tailwind_dsl/compare/v0.0.13...v0.0.14) (2022-10-18)
2
+
3
+
4
+ ### Bug Fixes
5
+
6
+ * refactor sample data directories ([23e4efb](https://github.com/klueless-io/tailwind_dsl/commit/23e4efb2863643cfbc8744e656a873900a421572))
7
+ * refactor sample data directories ([4017917](https://github.com/klueless-io/tailwind_dsl/commit/401791784e51fbe771c841294a4ad837f99c8ec9))
8
+ * start working on component model extractor ([929292d](https://github.com/klueless-io/tailwind_dsl/commit/929292dcdae8d79ccd12e2eae30d3e6710bac3f2))
9
+
10
+ ## [0.0.13](https://github.com/klueless-io/tailwind_dsl/compare/v0.0.12...v0.0.13) (2022-10-18)
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * refactor tests ([91b730d](https://github.com/klueless-io/tailwind_dsl/commit/91b730d91f99cf06810581d2d1684bb836eae860))
16
+
1
17
  ## [0.0.12](https://github.com/klueless-io/tailwind_dsl/compare/v0.0.11...v0.0.12) (2022-10-14)
2
18
 
3
19
 
@@ -0,0 +1,43 @@
1
+ # frozen_string_literal: true
2
+
3
+ module TailwindDsl
4
+ module Etl
5
+ module ComponentModels
6
+ # Extract component models by reading the cleansed component HTML and then using GPT3 to infer both the data/model structure.
7
+ class Extractor
8
+ attr_reader :components
9
+ attr_reader :target_root_path
10
+ attr_reader :batch_size
11
+ attr_reader :use_prompt
12
+
13
+ def initialize(components, target_root_path, batch_size: 1, use_prompt: false, filter_design_system: nil)
14
+ @components = components
15
+ @target_root_path = target_root_path
16
+ @batch_size = batch_size
17
+ @batch_left = batch_size
18
+ @use_prompt = use_prompt
19
+ end
20
+
21
+ # Goal: Extract the next (batch_size) component models using GPT3 and save them to target_root_path
22
+ # Create a data file at: design_system.name -> group-hierarchy -> component-name.data.json
23
+ # Create a model file at: design_system.name -> group-hierarchy -> component-name.model.rb
24
+
25
+ # Process: Collect all components and optionally filter them by design system name.
26
+ # Look for the next component to be processed, if it does not exist in the target folder then process it.
27
+ # decrement the batch_left counter and continue until batch_left is 0.
28
+ # if :use_prompt is true then display the input/output files and ask if you wish to process the component or skip.
29
+ # process the component by calling the GPT3 API and save the results to the target folder.
30
+
31
+ def extract; end
32
+
33
+ # def components
34
+ # @components ||= components.design_systems.map do |design_system|
35
+ # design_system.components.map do |component|
36
+ # Component.new(design_system, component, source_root_path, target_root_path)
37
+ # end
38
+ # end.flatten
39
+ # end
40
+ end
41
+ end
42
+ end
43
+ end
@@ -21,7 +21,9 @@ module TailwindDsl
21
21
  # .gsub(/(\n\s*\n)+/, "\n")
22
22
  attr_reader :uikit
23
23
  attr_reader :components
24
+ # Location for raw components
24
25
  attr_reader :source_root_path
26
+ # Location for component structures
25
27
  attr_reader :target_root_path
26
28
  attr_reader :reset_root_path
27
29
 
@@ -54,8 +56,8 @@ module TailwindDsl
54
56
 
55
57
  def query_components
56
58
  RawComponentQuery.query(uikit,
57
- raw_component_root_path: source_root_path,
58
- component_structure_root_path: target_root_path).records
59
+ source_root_path: source_root_path,
60
+ target_root_path: target_root_path).records
59
61
  end
60
62
 
61
63
  def process_components
@@ -8,8 +8,6 @@ module TailwindDsl
8
8
  # This is a two pass process:
9
9
  # 1. Query the raw component folder for all files that match the pattern and build up a graph with required information
10
10
  # 2. Flatten the graph into a list of rows
11
- #
12
- # If you need to debug, then pass in the debug flag and it will output the graph to the console
13
11
  class RawComponentQuery
14
12
  DesignSystem = Struct.new(
15
13
  :name,
@@ -64,22 +62,22 @@ module TailwindDsl
64
62
  end
65
63
 
66
64
  attr_reader :uikit
67
- attr_reader :raw_component_root_path
68
- attr_reader :component_structure_root_path
65
+ # Location for raw components
66
+ attr_reader :source_root_path
67
+ # Location for component structures
68
+ attr_reader :target_root_path
69
69
  attr_reader :current_design_system
70
- attr_reader :debug
71
70
  attr_reader :records
72
71
 
73
72
  def initialize(uikit, **args)
74
73
  @uikit = uikit
75
- @raw_component_root_path = args[:raw_component_root_path] || raise(ArgumentError, 'Missing raw_component_root_path')
76
- @component_structure_root_path = args[:component_structure_root_path] || raise(ArgumentError, 'Missing component_structure_root_path')
77
- @debug = args[:debug] || false
74
+ @source_root_path = args[:source_root_path] || raise(ArgumentError, 'Missing source_root_path')
75
+ @target_root_path = args[:target_root_path] || raise(ArgumentError, 'Missing target_root_path')
78
76
  end
79
77
 
80
78
  class << self
81
- def query(uikit, raw_component_root_path:, component_structure_root_path:, debug: false)
82
- instance = new(uikit, raw_component_root_path: raw_component_root_path, component_structure_root_path: component_structure_root_path, debug: debug)
79
+ def query(uikit, source_root_path:, target_root_path:)
80
+ instance = new(uikit, source_root_path: source_root_path, target_root_path: target_root_path)
83
81
  instance.call
84
82
  end
85
83
  end
@@ -119,11 +117,11 @@ module TailwindDsl
119
117
  end
120
118
 
121
119
  def source_path
122
- File.join(raw_component_root_path, design_system_name)
120
+ File.join(source_root_path, design_system_name)
123
121
  end
124
122
 
125
123
  def target_path
126
- File.join(component_structure_root_path, design_system_name)
124
+ File.join(target_root_path, design_system_name)
127
125
  end
128
126
 
129
127
  def map_design_system
@@ -3,6 +3,8 @@
3
3
  module TailwindDsl
4
4
  module Etl
5
5
  module RawComponents
6
+ # NOTE: Director is badly named.
7
+
6
8
  # Use the Director to build the UiKit which will store the JSON representations of each Design System plus components.
7
9
  #
8
10
  # This is a raw representation of the source.
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module TailwindDsl
4
- VERSION = '0.0.13'
4
+ VERSION = '0.0.15'
5
5
  end
data/lib/tailwind_dsl.rb CHANGED
@@ -17,6 +17,8 @@ require_relative 'tailwind_dsl/etl/raw_components/schema/uikit'
17
17
 
18
18
  require_relative 'tailwind_dsl/etl/component_structures/raw_component_query'
19
19
  require_relative 'tailwind_dsl/etl/component_structures/generator'
20
+
21
+ require_relative 'tailwind_dsl/etl/component_models/extractor'
20
22
  # require_relative 'tailwind_dsl/astro_demo/generate_astro_page_data'
21
23
 
22
24
  module TailwindDsl
data/package-lock.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "tailwind_dsl",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "lockfileVersion": 2,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "tailwind_dsl",
9
- "version": "0.0.13",
9
+ "version": "0.0.15",
10
10
  "devDependencies": {
11
11
  "@klueless-js/semantic-release-rubygem": "github:klueless-js/semantic-release-rubygem",
12
12
  "@semantic-release/changelog": "^6.0.1",
data/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tailwind_dsl",
3
- "version": "0.0.13",
3
+ "version": "0.0.15",
4
4
  "description": "Tailwind DSL will build tailwind websites useing Domain Specific Language conventions",
5
5
  "scripts": {
6
6
  "release": "semantic-release"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tailwind_dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
4
+ version: 0.0.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Cruwys
@@ -2151,6 +2151,7 @@ files:
2151
2151
  - lib/_.rb
2152
2152
  - lib/tailwind_dsl.rb
2153
2153
  - lib/tailwind_dsl/astro_demo/generate_astro_page_data.rb
2154
+ - lib/tailwind_dsl/etl/component_models/extractor.rb
2154
2155
  - lib/tailwind_dsl/etl/component_structures/generator.rb
2155
2156
  - lib/tailwind_dsl/etl/component_structures/raw_component_query.rb
2156
2157
  - lib/tailwind_dsl/etl/element.rb