better_html 1.0.16 → 2.0.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.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/MIT-LICENSE +1 -0
  3. data/Rakefile +19 -14
  4. data/ext/better_html_ext/better_html.h +1 -0
  5. data/ext/better_html_ext/extconf.rb +16 -0
  6. data/ext/better_html_ext/html_tokenizer.c +12 -0
  7. data/ext/better_html_ext/html_tokenizer.h +7 -0
  8. data/ext/better_html_ext/parser.c +793 -0
  9. data/ext/better_html_ext/parser.h +93 -0
  10. data/ext/better_html_ext/tokenizer.c +717 -0
  11. data/ext/better_html_ext/tokenizer.h +80 -0
  12. data/lib/better_html/ast/iterator.rb +14 -9
  13. data/lib/better_html/ast/node.rb +4 -2
  14. data/lib/better_html/better_erb/erubi_implementation.rb +43 -39
  15. data/lib/better_html/better_erb/runtime_checks.rb +140 -133
  16. data/lib/better_html/better_erb/validated_output_buffer.rb +30 -22
  17. data/lib/better_html/better_erb.rb +58 -54
  18. data/lib/better_html/config.rb +7 -4
  19. data/lib/better_html/errors.rb +4 -2
  20. data/lib/better_html/helpers.rb +7 -3
  21. data/lib/better_html/html_attributes.rb +6 -2
  22. data/lib/better_html/parser.rb +21 -14
  23. data/lib/better_html/railtie.rb +8 -4
  24. data/lib/better_html/test_helper/ruby_node.rb +15 -10
  25. data/lib/better_html/test_helper/safe_erb/allowed_script_type.rb +8 -4
  26. data/lib/better_html/test_helper/safe_erb/base.rb +12 -9
  27. data/lib/better_html/test_helper/safe_erb/no_javascript_tag_helper.rb +7 -3
  28. data/lib/better_html/test_helper/safe_erb/no_statements.rb +7 -3
  29. data/lib/better_html/test_helper/safe_erb/script_interpolation.rb +9 -4
  30. data/lib/better_html/test_helper/safe_erb/tag_interpolation.rb +23 -20
  31. data/lib/better_html/test_helper/safe_erb_tester.rb +33 -31
  32. data/lib/better_html/test_helper/safe_lodash_tester.rb +36 -35
  33. data/lib/better_html/test_helper/safety_error.rb +2 -0
  34. data/lib/better_html/tokenizer/base_erb.rb +14 -10
  35. data/lib/better_html/tokenizer/html_erb.rb +3 -2
  36. data/lib/better_html/tokenizer/html_lodash.rb +22 -14
  37. data/lib/better_html/tokenizer/javascript_erb.rb +3 -1
  38. data/lib/better_html/tokenizer/location.rb +17 -6
  39. data/lib/better_html/tokenizer/token.rb +2 -0
  40. data/lib/better_html/tokenizer/token_array.rb +8 -8
  41. data/lib/better_html/tree/attribute.rb +10 -6
  42. data/lib/better_html/tree/attributes_list.rb +9 -5
  43. data/lib/better_html/tree/tag.rb +10 -6
  44. data/lib/better_html/version.rb +3 -1
  45. data/lib/better_html.rb +19 -17
  46. data/lib/tasks/better_html_tasks.rake +1 -0
  47. metadata +39 -147
  48. data/lib/better_html/better_erb/erubis_implementation.rb +0 -44
  49. data/test/better_html/better_erb/implementation_test.rb +0 -406
  50. data/test/better_html/errors_test.rb +0 -13
  51. data/test/better_html/helpers_test.rb +0 -49
  52. data/test/better_html/parser_test.rb +0 -314
  53. data/test/better_html/test_helper/ruby_node_test.rb +0 -288
  54. data/test/better_html/test_helper/safe_erb/allowed_script_type_test.rb +0 -46
  55. data/test/better_html/test_helper/safe_erb/no_javascript_tag_helper_test.rb +0 -37
  56. data/test/better_html/test_helper/safe_erb/no_statements_test.rb +0 -129
  57. data/test/better_html/test_helper/safe_erb/script_interpolation_test.rb +0 -149
  58. data/test/better_html/test_helper/safe_erb/tag_interpolation_test.rb +0 -303
  59. data/test/better_html/test_helper/safe_lodash_tester_test.rb +0 -90
  60. data/test/better_html/tokenizer/html_erb_test.rb +0 -180
  61. data/test/better_html/tokenizer/html_lodash_test.rb +0 -98
  62. data/test/better_html/tokenizer/location_test.rb +0 -75
  63. data/test/better_html/tokenizer/token_array_test.rb +0 -146
  64. data/test/better_html/tokenizer/token_test.rb +0 -15
  65. data/test/dummy/README.rdoc +0 -28
  66. data/test/dummy/Rakefile +0 -6
  67. data/test/dummy/app/assets/javascripts/application.js +0 -13
  68. data/test/dummy/app/assets/stylesheets/application.css +0 -15
  69. data/test/dummy/app/controllers/application_controller.rb +0 -5
  70. data/test/dummy/app/helpers/application_helper.rb +0 -2
  71. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  72. data/test/dummy/bin/bundle +0 -3
  73. data/test/dummy/bin/rails +0 -4
  74. data/test/dummy/bin/rake +0 -4
  75. data/test/dummy/bin/setup +0 -29
  76. data/test/dummy/config/application.rb +0 -26
  77. data/test/dummy/config/boot.rb +0 -5
  78. data/test/dummy/config/database.yml +0 -25
  79. data/test/dummy/config/environment.rb +0 -5
  80. data/test/dummy/config/environments/development.rb +0 -41
  81. data/test/dummy/config/environments/production.rb +0 -79
  82. data/test/dummy/config/environments/test.rb +0 -42
  83. data/test/dummy/config/initializers/assets.rb +0 -11
  84. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -7
  85. data/test/dummy/config/initializers/cookies_serializer.rb +0 -3
  86. data/test/dummy/config/initializers/filter_parameter_logging.rb +0 -4
  87. data/test/dummy/config/initializers/inflections.rb +0 -16
  88. data/test/dummy/config/initializers/mime_types.rb +0 -4
  89. data/test/dummy/config/initializers/session_store.rb +0 -3
  90. data/test/dummy/config/initializers/wrap_parameters.rb +0 -14
  91. data/test/dummy/config/locales/en.yml +0 -23
  92. data/test/dummy/config/routes.rb +0 -56
  93. data/test/dummy/config/secrets.yml +0 -22
  94. data/test/dummy/config.ru +0 -4
  95. data/test/dummy/public/404.html +0 -67
  96. data/test/dummy/public/422.html +0 -67
  97. data/test/dummy/public/500.html +0 -66
  98. data/test/dummy/public/favicon.ico +0 -0
  99. data/test/test_helper.rb +0 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e8dc392542e380b0d3cb63c331cf0524f1b016f15fb99c907e8fd951fb22eae7
4
- data.tar.gz: 3393a92593172019c1180c9ca3ed8dc81c9c043954b9d0a221dd82dcd399f8dd
3
+ metadata.gz: d6b9f2275b7aaaf6375f643a430e8bf16612078e9c28f24d3148d1606bb599a0
4
+ data.tar.gz: 6a239818ba87d563497936f0c0dd5aa5fbe9ede118ac7f2171211f1a257a87cb
5
5
  SHA512:
6
- metadata.gz: d47ab514dcb80da8a3392dd933f4f51ccd88aa538c06fa94d325c8146c4f70250c0e57573d86ed726c58127591a9907f19183e5c640218bcadf5b09e724a83ef
7
- data.tar.gz: e9d3f1534fa3f9dfad8ff0f2290bf09b9b4b221584c28cb5bc3ec67663cbe739d86d281b544d002eb1666c7772e1f0bb9bd7c67026807cf2719af661bf93cc71
6
+ metadata.gz: 223d459a69405ae02d1de61a403fa92d19ed5dd468b509a68f1687c6aa7f8fc47165231965a2ce2c326f20addab0de356cc63c8d49d678aab9d3abb3c6888c97
7
+ data.tar.gz: 2ede27f18ee91fd2381b8be5b90253895a797164ebc6304e2031cdd59769111a1d5f53efb000d3a09cee82bb6bb2917d63525910d70be9a4fcf838f6b7fa4539
data/MIT-LICENSE CHANGED
@@ -1,3 +1,4 @@
1
+ Copyright 2022-present Shopify Inc.
1
2
  Copyright 2016 Francois Chagnon
2
3
 
3
4
  Permission is hereby granted, free of charge, to any person obtaining
data/Rakefile CHANGED
@@ -1,28 +1,33 @@
1
+ # frozen_string_literal: true
2
+
1
3
  begin
2
- require 'bundler/setup'
4
+ require "bundler/setup"
3
5
  require "bundler/gem_tasks"
4
6
  rescue LoadError
5
- puts 'You must `gem install bundler` and `bundle install` to run rake tasks'
7
+ puts "You must `gem install bundler` and `bundle install` to run rake tasks"
6
8
  end
7
9
 
8
- require 'rdoc/task'
10
+ require "rake/extensiontask"
11
+
12
+ Rake::ExtensionTask.new("better_html_ext")
13
+
14
+ require "rdoc/task"
9
15
 
10
16
  RDoc::Task.new(:rdoc) do |rdoc|
11
- rdoc.rdoc_dir = 'rdoc'
12
- rdoc.title = 'BetterHtml'
13
- rdoc.options << '--line-numbers'
14
- rdoc.rdoc_files.include('README.rdoc')
15
- rdoc.rdoc_files.include('lib/**/*.rb')
17
+ rdoc.rdoc_dir = "rdoc"
18
+ rdoc.title = "BetterHtml"
19
+ rdoc.options << "--line-numbers"
20
+ rdoc.rdoc_files.include("README.rdoc")
21
+ rdoc.rdoc_files.include("lib/**/*.rb")
16
22
  end
17
23
 
18
- require 'rake/testtask'
24
+ require "rake/testtask"
19
25
 
20
26
  Rake::TestTask.new(:test) do |t|
21
- t.libs << 'lib'
22
- t.libs << 'test'
23
- t.pattern = 'test/**/*_test.rb'
27
+ t.libs << "lib"
28
+ t.libs << "test"
29
+ t.pattern = "test/**/*_test.rb"
24
30
  t.verbose = false
25
31
  end
26
32
 
27
-
28
- task default: :test
33
+ task default: [:compile, :test]
@@ -0,0 +1 @@
1
+ #include "html_tokenizer.h"
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "mkmf"
4
+
5
+ # rubocop:disable Style/GlobalVars
6
+ $CXXFLAGS += " -std=c++11 "
7
+ $CXXFLAGS += " -g -O1 -ggdb "
8
+ $CFLAGS += " -g -O1 -ggdb "
9
+
10
+ if ENV["DEBUG"]
11
+ $CXXFLAGS += " -DDEBUG "
12
+ $CFLAGS += " -DDEBUG "
13
+ end
14
+ # rubocop:enable Style/GlobalVars
15
+
16
+ create_makefile("better_html_ext")
@@ -0,0 +1,12 @@
1
+ #include <ruby.h>
2
+ #include "tokenizer.h"
3
+ #include "parser.h"
4
+
5
+ static VALUE mHtmlTokenizer = Qnil;
6
+
7
+ void Init_better_html_ext()
8
+ {
9
+ mHtmlTokenizer = rb_define_module("HtmlTokenizer");
10
+ Init_html_tokenizer_tokenizer(mHtmlTokenizer);
11
+ Init_html_tokenizer_parser(mHtmlTokenizer);
12
+ }
@@ -0,0 +1,7 @@
1
+ #pragma once
2
+
3
+ #ifdef DEBUG
4
+ #define DBG_PRINT(msg, arg...) printf("%s:%u: " msg "\n", __FUNCTION__, __LINE__, arg);
5
+ #else
6
+ #define DBG_PRINT(msg, arg...) ((void)0);
7
+ #endif