better_html 1.0.16 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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