panda-editor 0.1.0 → 0.2.0

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: a96fbed654e5115930ed44a6e5561c732a36c27be96d10888989570ec4c6a705
4
- data.tar.gz: 0efd2b485067e1f83d59e2903cab40279dc8830fdbe073b5ae3ae5d31346ff29
3
+ metadata.gz: c4aceae2a319683face212a6ab1cb17cf0796ac0d0ce5f10ccfe4adaf1ff3a76
4
+ data.tar.gz: 440839d76811382db14f860ed4529ea6672148a815459c817423ef734bc0a81d
5
5
  SHA512:
6
- metadata.gz: 7961ae1af4bddbdd37543d7c73cffd3aaf3962cd75815c1206c6023cebc1e2e1095ac1d5de218132f4041e94eb1a3a48a02b4bc8d17f4b92655ba74c33a88427
7
- data.tar.gz: '0602738109c87304058c6fd0c52cfc87f71ab19ed3fcc1b6766da150687c2bab232358395c31dbfc9e41f402377944039590defb03e3b4c0aa4ccf05e78a8298'
6
+ metadata.gz: ab408175021676d37abd0a62b37181cda6830c5e09324056d4bd112bee796bca5a61f5ae3c8dfdc64e9ea5134e55729b16b8343b0a57cb9b78ecb2229104d0cd
7
+ data.tar.gz: d6142f7cd742a6efb0f3fd810a517361cfcd5446ae8014c1699376a857b65acb388635f40f1063116baa3ab659b2cdac8e60f23c57cb19bacd8ef27287b8b43e
data/.rspec ADDED
@@ -0,0 +1,3 @@
1
+ --require spec_helper
2
+ --format progress
3
+ --color
data/.yamllint ADDED
@@ -0,0 +1,73 @@
1
+ ---
2
+ extends: default
3
+
4
+ rules:
5
+ brackets:
6
+ level: error
7
+ max-spaces-inside: 1
8
+ commas:
9
+ level: error
10
+ max-spaces-after: 1
11
+ comments:
12
+ level: error
13
+ min-spaces-from-content: 2
14
+ comments-indentation:
15
+ level: error
16
+ document-end:
17
+ level: error
18
+ present: false
19
+ document-start:
20
+ level: error
21
+ present: true
22
+ empty-lines:
23
+ level: error
24
+ max: 2
25
+ max-end: 0
26
+ max-start: 0
27
+ empty-values:
28
+ level: error
29
+ forbid-in-block-mappings: true
30
+ forbid-in-flow-mappings: true
31
+ hyphens:
32
+ level: error
33
+ max-spaces-after: 1
34
+ indentation:
35
+ level: error
36
+ spaces: 2
37
+ indent-sequences: true
38
+ key-duplicates:
39
+ level: error
40
+ key-ordering: disable
41
+ line-length:
42
+ level: warning
43
+ max: 120
44
+ allow-non-breakable-words: true
45
+ allow-non-breakable-inline-mappings: true
46
+ new-line-at-end-of-file:
47
+ level: error
48
+ new-lines:
49
+ level: error
50
+ type: unix
51
+ octal-values:
52
+ level: error
53
+ forbid-implicit-octal: true
54
+ forbid-explicit-octal: true
55
+ quoted-strings:
56
+ level: error
57
+ quote-type: double
58
+ required: only-when-needed
59
+ trailing-spaces:
60
+ level: error
61
+ truthy:
62
+ level: error
63
+ allowed-values: ["true", "false"]
64
+ check-keys: true
65
+
66
+ ignore: |
67
+ vendor/
68
+ spec/dummy/tmp/
69
+ spec/dummy/log/
70
+ coverage/
71
+ node_modules/
72
+ .bundle/
73
+ tmp/
data/CHANGELOG.md ADDED
@@ -0,0 +1,69 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [0.2.0] - 2025-08-12
9
+
10
+ ### Added
11
+ - Full CI/CD pipeline with GitHub Actions
12
+ - Automated testing across Ruby 3.2, 3.3 and Rails 7.1, 7.2, 8.0
13
+ - StandardRB linting integration
14
+ - YAML validation for workflow files
15
+ - Security auditing with bundle-audit
16
+ - Code coverage reporting with Codecov
17
+ - Automatic gem release workflow
18
+ - Triggers on version changes after CI passes
19
+ - Publishes to RubyGems automatically
20
+ - Creates GitHub releases with changelogs
21
+ - Comprehensive test suite setup
22
+ - RSpec configuration for Rails engine testing
23
+ - Test helpers for HTML normalization
24
+ - Support for EditorJS block testing
25
+ - Rails view helpers integration in tests
26
+ - Development dependencies
27
+ - Added rspec-rails for testing
28
+ - Added standard gem for code linting
29
+ - Added bundle-audit for security scanning
30
+ - Added erb_lint for template linting
31
+
32
+ ### Fixed
33
+ - Test infrastructure issues
34
+ - Fixed Rails initialization for engine specs without dummy app
35
+ - Improved HTML whitespace normalization in tests
36
+ - Added missing ActionView helpers to test environment
37
+ - CI/CD pipeline issues
38
+ - Fixed StandardRB version conflicts
39
+ - Resolved YAML validation errors in workflows
40
+ - Fixed missing test dependencies
41
+ - Corrected workflow trigger dependencies
42
+
43
+ ### Changed
44
+ - Improved test helper methods for better HTML comparison
45
+ - Simplified Rails test setup without requiring Sprockets
46
+ - Updated CI matrix to include Rails 8.0 support
47
+
48
+ ## [0.1.0] - 2025-08-12
49
+
50
+ ### Initial Release
51
+ - Extracted EditorJS functionality from Panda CMS into standalone gem
52
+ - Core editor blocks support:
53
+ - Paragraph
54
+ - Header
55
+ - List (ordered and unordered)
56
+ - Quote
57
+ - Table
58
+ - Image
59
+ - Alert
60
+ - Embed
61
+ - EditorJS renderer for converting block data to HTML
62
+ - Rails engine integration
63
+ - Importmap configuration for EditorJS assets
64
+ - Configurable custom block renderers
65
+ - HTML sanitization for security
66
+ - Asset pipeline integration
67
+
68
+ [0.2.0]: https://github.com/tastybamboo/panda-editor/compare/v0.1.0...v0.2.0
69
+ [0.1.0]: https://github.com/tastybamboo/panda-editor/releases/tag/v0.1.0
data/config/importmap.rb CHANGED
@@ -12,4 +12,4 @@ pin "@editorjs/nested-list", to: "https://cdn.jsdelivr.net/npm/@editorjs/nested-
12
12
  pin "@editorjs/quote", to: "https://cdn.jsdelivr.net/npm/@editorjs/quote@2.6.0/+esm"
13
13
  pin "@editorjs/simple-image", to: "https://cdn.jsdelivr.net/npm/@editorjs/simple-image@1.6.0/+esm"
14
14
  pin "@editorjs/table", to: "https://cdn.jsdelivr.net/npm/@editorjs/table@2.3.0/+esm"
15
- pin "@editorjs/embed", to: "https://cdn.jsdelivr.net/npm/@editorjs/embed@2.7.0/+esm"
15
+ pin "@editorjs/embed", to: "https://cdn.jsdelivr.net/npm/@editorjs/embed@2.7.0/+esm"
@@ -37,8 +37,8 @@ module Panda
37
37
  private
38
38
 
39
39
  def use_compiled_assets?
40
- Rails.env.production? ||
41
- Rails.env.test? ||
40
+ Rails.env.production? ||
41
+ Rails.env.test? ||
42
42
  ENV["PANDA_EDITOR_USE_COMPILED_ASSETS"] == "true"
43
43
  end
44
44
 
@@ -86,7 +86,7 @@ module Panda
86
86
 
87
87
  def download_assets_from_github
88
88
  Rails.logger.info "[Panda Editor] Downloading assets from GitHub releases..."
89
-
89
+
90
90
  begin
91
91
  release_data = fetch_latest_release
92
92
  download_release_assets(release_data["assets"])
@@ -99,7 +99,7 @@ module Panda
99
99
  def fetch_latest_release
100
100
  uri = URI(GITHUB_RELEASES_URL)
101
101
  response = Net::HTTP.get_response(uri)
102
-
102
+
103
103
  if response.code == "200"
104
104
  JSON.parse(response.body)
105
105
  else
@@ -110,7 +110,7 @@ module Panda
110
110
  def download_release_assets(assets)
111
111
  assets.each do |asset|
112
112
  next unless asset["name"].match?(/panda-editor.*\.(js|css)$/)
113
-
113
+
114
114
  download_asset(asset)
115
115
  end
116
116
  end
@@ -118,7 +118,7 @@ module Panda
118
118
  def download_asset(asset)
119
119
  uri = URI(asset["browser_download_url"])
120
120
  response = Net::HTTP.get_response(uri)
121
-
121
+
122
122
  if response.code == "200"
123
123
  save_asset(asset["name"], response.body)
124
124
  end
@@ -127,7 +127,7 @@ module Panda
127
127
  def save_asset(filename, content)
128
128
  dir = Rails.root.join("public", "panda-editor-assets")
129
129
  FileUtils.mkdir_p(dir)
130
-
130
+
131
131
  File.write(dir.join(filename), content)
132
132
  Rails.logger.info "[Panda Editor] Downloaded #{filename}"
133
133
  end
@@ -141,11 +141,11 @@ module Panda
141
141
  def copy_embedded_assets
142
142
  source_dir = Panda::Editor::Engine.root.join("public", "panda-editor-assets")
143
143
  dest_dir = Rails.root.join("public", "panda-editor-assets")
144
-
144
+
145
145
  FileUtils.mkdir_p(dest_dir)
146
146
  FileUtils.cp_r(Dir.glob(source_dir.join("*")), dest_dir)
147
147
  end
148
148
  end
149
149
  end
150
150
  end
151
- end
151
+ end
@@ -14,7 +14,7 @@ module Panda
14
14
 
15
15
  # Allow applications to configure editor tools
16
16
  config.editor_js_tools = []
17
-
17
+
18
18
  # Custom block renderers
19
19
  config.custom_renderers = {}
20
20
 
@@ -31,4 +31,4 @@ module Panda
31
31
  end
32
32
  end
33
33
  end
34
- end
34
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Panda
4
4
  module Editor
5
- VERSION = "0.1.0"
5
+ VERSION = "0.2.0"
6
6
  end
7
- end
7
+ end
data/lib/panda/editor.rb CHANGED
@@ -10,7 +10,7 @@ module Panda
10
10
  # Autoload components
11
11
  autoload :Renderer, "panda/editor/renderer"
12
12
  autoload :Content, "panda/editor/content"
13
-
13
+
14
14
  module Blocks
15
15
  autoload :Base, "panda/editor/blocks/base"
16
16
  autoload :Alert, "panda/editor/blocks/alert"
@@ -22,4 +22,4 @@ module Panda
22
22
  autoload :Table, "panda/editor/blocks/table"
23
23
  end
24
24
  end
25
- end
25
+ end
@@ -3,64 +3,64 @@
3
3
  namespace :panda_editor do
4
4
  namespace :assets do
5
5
  desc "Compile Panda Editor assets for production"
6
- task :compile => :environment do
6
+ task compile: :environment do
7
7
  require "fileutils"
8
-
8
+
9
9
  puts "Compiling Panda Editor assets..."
10
-
10
+
11
11
  # Create temporary directory for assets
12
12
  tmp_dir = Rails.root.join("tmp", "panda_editor_assets")
13
13
  FileUtils.mkdir_p(tmp_dir)
14
-
14
+
15
15
  # Get version from gem
16
16
  version = Panda::Editor::VERSION
17
-
17
+
18
18
  # Compile JavaScript
19
19
  compile_javascript(tmp_dir, version)
20
-
20
+
21
21
  # Compile CSS
22
22
  compile_css(tmp_dir, version)
23
-
23
+
24
24
  # Copy to public directory
25
25
  public_dir = Rails.root.join("public", "panda-editor-assets")
26
26
  FileUtils.mkdir_p(public_dir)
27
27
  FileUtils.cp_r(Dir.glob(tmp_dir.join("*")), public_dir)
28
-
28
+
29
29
  puts "✅ Assets compiled successfully"
30
30
  end
31
31
 
32
32
  desc "Download Panda Editor assets from GitHub"
33
- task :download => :environment do
33
+ task download: :environment do
34
34
  require "panda/editor/asset_loader"
35
-
35
+
36
36
  puts "Downloading Panda Editor assets from GitHub..."
37
37
  Panda::Editor::AssetLoader.send(:download_assets_from_github)
38
38
  puts "✅ Assets downloaded successfully"
39
39
  end
40
40
 
41
41
  desc "Upload compiled assets to GitHub release"
42
- task :upload => :environment do
42
+ task upload: :environment do
43
43
  require "net/http"
44
44
  require "json"
45
-
45
+
46
46
  puts "Uploading Panda Editor assets to GitHub release..."
47
-
47
+
48
48
  # This task would be run in CI to upload compiled assets
49
49
  # to the GitHub release when a new version is tagged
50
-
50
+
51
51
  version = ENV["GITHUB_REF_NAME"] || "v#{Panda::Editor::VERSION}"
52
52
  token = ENV["GITHUB_TOKEN"]
53
-
53
+
54
54
  unless token
55
55
  puts "❌ GITHUB_TOKEN environment variable required"
56
56
  exit 1
57
57
  end
58
-
58
+
59
59
  # Find compiled assets
60
60
  assets_dir = Rails.root.join("public", "panda-editor-assets")
61
61
  js_file = Dir.glob(assets_dir.join("panda-editor-*.js")).first
62
62
  css_file = Dir.glob(assets_dir.join("panda-editor-*.css")).first
63
-
63
+
64
64
  if js_file && css_file
65
65
  upload_to_release(js_file, version, token)
66
66
  upload_to_release(css_file, version, token)
@@ -75,28 +75,28 @@ namespace :panda_editor do
75
75
 
76
76
  def compile_javascript(tmp_dir, version)
77
77
  puts " Compiling JavaScript..."
78
-
78
+
79
79
  js_files = Dir.glob(Panda::Editor::Engine.root.join("app/javascript/panda/editor/**/*.js"))
80
-
80
+
81
81
  output = js_files.map { |file| File.read(file) }.join("\n\n")
82
-
82
+
83
83
  # Add version marker
84
84
  output = "/* Panda Editor v#{version} */\n#{output}"
85
-
85
+
86
86
  # Write compiled file
87
87
  File.write(tmp_dir.join("panda-editor-#{version}.js"), output)
88
88
  end
89
89
 
90
90
  def compile_css(tmp_dir, version)
91
91
  puts " Compiling CSS..."
92
-
92
+
93
93
  css_files = Dir.glob(Panda::Editor::Engine.root.join("app/assets/stylesheets/panda/editor/**/*.css"))
94
-
94
+
95
95
  output = css_files.map { |file| File.read(file) }.join("\n\n")
96
-
96
+
97
97
  # Add version marker
98
98
  output = "/* Panda Editor v#{version} */\n#{output}"
99
-
99
+
100
100
  # Write compiled file
101
101
  File.write(tmp_dir.join("panda-editor-#{version}.css"), output)
102
102
  end
@@ -107,4 +107,4 @@ namespace :panda_editor do
107
107
  puts " Uploading #{File.basename(file)}..."
108
108
  end
109
109
  end
110
- end
110
+ end
data/log/test.log ADDED
File without changes
data/panda-editor.gemspec CHANGED
@@ -22,7 +22,8 @@ Gem::Specification.new do |spec|
22
22
  spec.files = Dir.chdir(__dir__) do
23
23
  `git ls-files -z`.split("\x0").reject do |f|
24
24
  (File.expand_path(f) == __FILE__) ||
25
- f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile])
25
+ f.start_with?(*%w[bin/ test/ spec/ features/ .git .github appveyor Gemfile]) ||
26
+ f.end_with?(".gem")
26
27
  end
27
28
  end
28
29
  spec.bindir = "exe"
@@ -32,9 +33,9 @@ Gem::Specification.new do |spec|
32
33
  # Rails dependencies
33
34
  spec.add_dependency "rails", ">= 7.1"
34
35
  spec.add_dependency "sanitize", "~> 6.0"
35
-
36
+
36
37
  # Development dependencies
37
38
  spec.add_development_dependency "rspec-rails", "~> 6.0"
38
39
  spec.add_development_dependency "factory_bot_rails", "~> 6.2"
39
- spec.add_development_dependency "standardrb", "~> 1.0"
40
- end
40
+ spec.add_development_dependency "standard", ">= 1.35.1"
41
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: panda-editor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Panda CMS Team
@@ -66,19 +66,19 @@ dependencies:
66
66
  - !ruby/object:Gem::Version
67
67
  version: '6.2'
68
68
  - !ruby/object:Gem::Dependency
69
- name: standardrb
69
+ name: standard
70
70
  requirement: !ruby/object:Gem::Requirement
71
71
  requirements:
72
- - - "~>"
72
+ - - ">="
73
73
  - !ruby/object:Gem::Version
74
- version: '1.0'
74
+ version: 1.35.1
75
75
  type: :development
76
76
  prerelease: false
77
77
  version_requirements: !ruby/object:Gem::Requirement
78
78
  requirements:
79
- - - "~>"
79
+ - - ">="
80
80
  - !ruby/object:Gem::Version
81
- version: '1.0'
81
+ version: 1.35.1
82
82
  description: A modular, extensible rich text editor using EditorJS for Rails applications.
83
83
  Extracted from Panda CMS.
84
84
  email:
@@ -87,6 +87,9 @@ executables: []
87
87
  extensions: []
88
88
  extra_rdoc_files: []
89
89
  files:
90
+ - ".rspec"
91
+ - ".yamllint"
92
+ - CHANGELOG.md
90
93
  - LICENSE
91
94
  - README.md
92
95
  - app/javascript/panda/editor/application.js
@@ -113,6 +116,7 @@ files:
113
116
  - lib/panda/editor/renderer.rb
114
117
  - lib/panda/editor/version.rb
115
118
  - lib/tasks/assets.rake
119
+ - log/test.log
116
120
  - panda-editor.gemspec
117
121
  homepage: https://github.com/tastybamboo/panda-editor
118
122
  licenses: