faml 0.3.1 → 0.3.2

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 (60) hide show
  1. checksums.yaml +4 -4
  2. data/.gitmodules +3 -0
  3. data/.travis.yml +0 -3
  4. data/Appraisals +5 -4
  5. data/CHANGELOG.md +11 -0
  6. data/Gemfile +1 -1
  7. data/ext/attribute_builder/attribute_builder.c +63 -31
  8. data/ext/attribute_builder/extconf.rb +12 -0
  9. data/faml.gemspec +1 -1
  10. data/gemfiles/rails_4.0.gemfile +1 -1
  11. data/gemfiles/rails_4.1.gemfile +1 -1
  12. data/gemfiles/rails_4.2.gemfile +1 -1
  13. data/gemfiles/rails_edge.gemfile +2 -1
  14. data/incompatibilities/README.md +1 -1
  15. data/incompatibilities/spec/render/attribute_spec.md +0 -0
  16. data/lib/faml.rb +4 -4
  17. data/lib/faml/cli.rb +1 -1
  18. data/lib/faml/compiler.rb +7 -7
  19. data/lib/faml/engine.rb +4 -4
  20. data/lib/faml/filter_compilers.rb +12 -12
  21. data/lib/faml/filter_compilers/base.rb +1 -1
  22. data/lib/faml/filter_compilers/cdata.rb +1 -1
  23. data/lib/faml/filter_compilers/coffee.rb +1 -1
  24. data/lib/faml/filter_compilers/css.rb +1 -1
  25. data/lib/faml/filter_compilers/escaped.rb +1 -1
  26. data/lib/faml/filter_compilers/javascript.rb +1 -1
  27. data/lib/faml/filter_compilers/markdown.rb +1 -1
  28. data/lib/faml/filter_compilers/plain.rb +1 -1
  29. data/lib/faml/filter_compilers/preserve.rb +1 -1
  30. data/lib/faml/filter_compilers/ruby.rb +1 -1
  31. data/lib/faml/filter_compilers/sass.rb +1 -1
  32. data/lib/faml/filter_compilers/scss.rb +1 -1
  33. data/lib/faml/filter_compilers/tilt_base.rb +1 -2
  34. data/lib/faml/rails_helpers.rb +1 -1
  35. data/lib/faml/railtie.rb +1 -1
  36. data/lib/faml/text_compiler.rb +2 -2
  37. data/lib/faml/tilt.rb +1 -1
  38. data/lib/faml/version.rb +1 -1
  39. data/spec/render/attribute_spec.rb +13 -0
  40. data/vendor/houdini/.gitignore +3 -0
  41. data/vendor/houdini/COPYING +7 -0
  42. data/vendor/houdini/Makefile +79 -0
  43. data/vendor/houdini/README.md +59 -0
  44. data/vendor/houdini/buffer.c +249 -0
  45. data/vendor/houdini/buffer.h +113 -0
  46. data/vendor/houdini/houdini.h +46 -0
  47. data/vendor/houdini/houdini_href_e.c +115 -0
  48. data/vendor/houdini/houdini_html_e.c +90 -0
  49. data/vendor/houdini/houdini_html_u.c +122 -0
  50. data/vendor/houdini/houdini_js_e.c +90 -0
  51. data/vendor/houdini/houdini_js_u.c +60 -0
  52. data/vendor/houdini/houdini_uri_e.c +107 -0
  53. data/vendor/houdini/houdini_uri_u.c +68 -0
  54. data/vendor/houdini/houdini_xml_e.c +136 -0
  55. data/vendor/houdini/html_unescape.gperf +258 -0
  56. data/vendor/houdini/html_unescape.h +754 -0
  57. data/vendor/houdini/tools/build_table.py +13 -0
  58. data/vendor/houdini/tools/build_tables.c +51 -0
  59. data/vendor/houdini/tools/wikipedia_table.txt +2025 -0
  60. metadata +23 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b0b565977825d5840091b528c95126d1145470ff
4
- data.tar.gz: 6d7bbd18e0915cdf9a9feb241c40009b85eacddb
3
+ metadata.gz: 11898f802ec5a7c2db4ee3dddda380478dc5cbff
4
+ data.tar.gz: 4151d81c63cc375de89f7eb5f165cb63fa9388a3
5
5
  SHA512:
6
- metadata.gz: ea2a871d173b410deccaa0d693f3a6c6aff6479a78e74c1424147a33ff64277eaf4652e921567bf75bc56f58b61148fe14d1f2149bfe62367f1eb9f023bf428a
7
- data.tar.gz: fb9112e98d3df4146c058f2075498de3645ef480e1ebb5af2655775e3459d4f79b8291b2a2b82e12e758922b077063f14d63758cdd58bfc605a01242e819a8c4
6
+ metadata.gz: d8917747df51adc7d2df2606657e659760eecab5ea673d1241c9acaa024edb6c88884d1e8560093b1faca4a3c5fec77fe345c5b6c3fbfbf713e98e9f7221c4ed
7
+ data.tar.gz: 3b667d9450d939a47690b906c3b25f1be9708914c07435f5485305374729a2a33ff9c366a1a278ed63fc710c846785d77900f42ab3416b081030a9442481d87f
data/.gitmodules CHANGED
@@ -1,3 +1,6 @@
1
1
  [submodule "haml-spec"]
2
2
  path = haml-spec
3
3
  url = https://github.com/haml/haml-spec
4
+ [submodule "vendor/houdini"]
5
+ path = vendor/houdini
6
+ url = https://github.com/vmg/houdini
data/.travis.yml CHANGED
@@ -19,9 +19,6 @@ matrix:
19
19
  allow_failures:
20
20
  - rvm: ruby-head
21
21
  - gemfile: gemfiles/rails_edge.gemfile
22
- # https://github.com/rspec/rspec-rails/pull/1264
23
- - rvm: 2.2
24
- gemfile: gemfiles/rails_4.0.gemfile
25
22
  exclude:
26
23
  # Rails 5 requires to run on Ruby 2.2.0 or newer.
27
24
  - rvm: 2.0.0
data/Appraisals CHANGED
@@ -1,25 +1,26 @@
1
1
  appraise 'rails-4.0' do
2
2
  gem 'rails', '~> 4.0.0'
3
- gem 'rspec-rails'
3
+ gem 'rspec-rails', '>= 3.2.0'
4
4
  gem 'sqlite3'
5
5
  end
6
6
 
7
7
  appraise 'rails-4.1' do
8
8
  gem 'rails', '~> 4.1.0'
9
- gem 'rspec-rails'
9
+ gem 'rspec-rails', '>= 3.2.0'
10
10
  gem 'sqlite3'
11
11
  end
12
12
 
13
13
  appraise 'rails-4.2' do
14
14
  gem 'rails', '~> 4.2.0'
15
- gem 'rspec-rails'
15
+ gem 'rspec-rails', '>= 3.2.0'
16
16
  gem 'sqlite3'
17
17
  end
18
18
 
19
19
  appraise 'rails-edge' do
20
20
  gem 'rails', git: 'https://github.com/rails/rails'
21
21
  gem 'arel', git: 'https://github.com/rails/arel'
22
- gem 'rspec-rails'
22
+ gem 'rack', git: 'https://github.com/rack/rack'
23
+ gem 'rspec-rails', '>= 3.2.0'
23
24
  gem 'sqlite3'
24
25
  end
25
26
 
data/CHANGELOG.md CHANGED
@@ -1,3 +1,14 @@
1
+ ## 0.3.2 (2015-09-24)
2
+ - Fix illegal constant name
3
+ - Use `require_relative` if possible
4
+ - It improves loading performance a little especially when there's long
5
+ `$LOAD_PATH` by Bundler.
6
+ - Improve `Faml::AttributeBuilder.build` performance
7
+ - Call `escape_html` C-API (vmg/houdini) directly.
8
+ - Avoid `String#gsub` for performance
9
+ - Allow NUL characters in attribute keys
10
+ - You should not include NUL characters, of course.
11
+
1
12
  ## 0.3.1 (2015-09-20)
2
13
  - Improve `Faml::AttributeBuilder.build` performance
3
14
  - Reduce String allocations
data/Gemfile CHANGED
@@ -4,5 +4,5 @@ source 'https://rubygems.org'
4
4
  gemspec
5
5
 
6
6
  gem 'rails'
7
- gem 'rspec-rails'
7
+ gem 'rspec-rails', '>= 3.2.0'
8
8
  gem 'sqlite3'
@@ -1,5 +1,7 @@
1
1
  #include <ruby.h>
2
+ #include <ruby/encoding.h>
2
3
  #include <ruby/version.h>
4
+ #include "houdini.h"
3
5
 
4
6
  #if (RUBY_API_VERSION_MAJOR > 2) || (RUBY_API_VERSION_MAJOR == 2 && RUBY_API_VERSION_MINOR >= 1)
5
7
  /* define nothing */
@@ -9,7 +11,7 @@
9
11
  #endif
10
12
 
11
13
  VALUE rb_mAttributeBuilder;
12
- static ID id_keys, id_sort_bang, id_uniq_bang, id_merge_bang, id_temple, id_utils, id_escape_html, id_gsub, id_to_s;
14
+ static ID id_keys, id_sort_bang, id_uniq_bang, id_merge_bang, id_to_s;
13
15
  static ID id_id, id_class, id_underscore, id_hyphen, id_space, id_equal;
14
16
 
15
17
  static void
@@ -49,13 +51,39 @@ struct normalize_data_i2_arg {
49
51
  VALUE key, normalized;
50
52
  };
51
53
 
54
+ static VALUE
55
+ substitute_underscores(VALUE str)
56
+ {
57
+ int frozen;
58
+ long i, len;
59
+
60
+ /* gsub('_', '-') */
61
+ Check_Type(str, T_STRING);
62
+ len = RSTRING_LEN(str);
63
+ frozen = OBJ_FROZEN(str);
64
+ for (i = 0; i < len; i++) {
65
+ if (RSTRING_PTR(str)[i] == '_') {
66
+ if (frozen) {
67
+ str = rb_str_dup(str);
68
+ frozen = 0;
69
+ }
70
+ rb_str_update(str, i, 1, rb_const_get(rb_mAttributeBuilder, id_hyphen));
71
+ }
72
+ }
73
+
74
+ return str;
75
+ }
76
+
52
77
  static int
53
78
  normalize_data_i2(VALUE key, VALUE value, VALUE ptr)
54
79
  {
55
80
  struct normalize_data_i2_arg *arg = (struct normalize_data_i2_arg *)ptr;
56
81
  VALUE k = rb_funcall(arg->key, id_to_s, 0);
57
82
 
58
- k = rb_funcall(k, id_gsub, 2, rb_const_get(rb_mAttributeBuilder, id_underscore), rb_const_get(rb_mAttributeBuilder, id_hyphen));
83
+ k = substitute_underscores(k);
84
+ if (OBJ_FROZEN(k)) {
85
+ k = rb_str_dup(k);
86
+ }
59
87
  rb_str_cat(k, "-", 1);
60
88
  rb_str_append(k, key);
61
89
  rb_hash_aset(arg->normalized, k, value);
@@ -74,7 +102,7 @@ normalize_data_i(VALUE key, VALUE value, VALUE normalized)
74
102
  rb_hash_foreach(normalize_data(value), normalize_data_i2, (VALUE)(&arg));
75
103
  } else {
76
104
  key = rb_funcall(key, id_to_s, 0);
77
- key = rb_funcall(key, id_gsub, 2, rb_const_get(rb_mAttributeBuilder, id_underscore), rb_const_get(rb_mAttributeBuilder, id_hyphen));
105
+ key = substitute_underscores(key);
78
106
  rb_hash_aset(normalized, key, value);
79
107
  }
80
108
  return ST_CONTINUE;
@@ -91,6 +119,16 @@ normalize_data(VALUE data)
91
119
  return normalized;
92
120
  }
93
121
 
122
+ static int
123
+ put_data_attribute(VALUE key, VALUE val, VALUE hash)
124
+ {
125
+ VALUE k = rb_str_buf_new(5 + RSTRING_LEN(key));
126
+ rb_str_buf_cat(k, "data-", 5);
127
+ rb_str_buf_append(k, key);
128
+ rb_hash_aset(hash, k, val);
129
+ return ST_CONTINUE;
130
+ }
131
+
94
132
  static void
95
133
  normalize(VALUE hash)
96
134
  {
@@ -99,26 +137,20 @@ normalize(VALUE hash)
99
137
  long i;
100
138
  for (i = 0; i < len; i++) {
101
139
  VALUE key = RARRAY_AREF(keys, i);
102
- const char *key_cstr = StringValueCStr(key);
103
140
  VALUE value = rb_hash_lookup(hash, key);
104
- if (RB_TYPE_P(value, T_HASH) && strcmp(key_cstr, "data") == 0) {
105
- VALUE data, data_keys;
106
- long data_len, j;
141
+ VALUE key_str = key;
142
+
143
+ if (!RB_TYPE_P(key, T_STRING)) {
144
+ key_str = rb_funcall(key, id_to_s, 0);
145
+ }
146
+ if (RB_TYPE_P(value, T_HASH) && RSTRING_LEN(key_str) == 4 && memcmp(RSTRING_PTR(key_str), "data", 4) == 0) {
147
+ VALUE data;
107
148
 
108
149
  rb_hash_delete(hash, key);
109
150
  data = normalize_data(value);
110
- data_keys = rb_funcall(data, id_keys, 0);
111
- rb_funcall(data_keys, id_sort_bang, 0);
112
- data_len = RARRAY_LEN(data_keys);
113
- for (j = 0; j < data_len; j++) {
114
- VALUE data_key = RARRAY_AREF(data_keys, j);
115
- VALUE k = rb_str_buf_new(5 + RSTRING_LEN(data_key));
116
- rb_str_buf_cat(k, "data-", 5);
117
- rb_str_buf_append(k, data_key);
118
- rb_hash_aset(hash, k, rb_hash_lookup(data, data_key));
119
- }
151
+ rb_hash_foreach(data, put_data_attribute, hash);
120
152
  } else if (!(RB_TYPE_P(value, T_TRUE) || RB_TYPE_P(value, T_FALSE) || NIL_P(value))) {
121
- rb_hash_aset(hash, key, rb_funcall(value, id_to_s, 0));
153
+ rb_hash_aset(hash, key_str, rb_funcall(value, id_to_s, 0));
122
154
  }
123
155
  }
124
156
  }
@@ -143,11 +175,14 @@ merge(VALUE attributes, int argc, VALUE *argv)
143
175
  static void
144
176
  put_attribute(VALUE buf, VALUE attr_quote, VALUE key, VALUE value)
145
177
  {
146
- VALUE utils_class;
178
+ gh_buf ob = GH_BUF_INIT;
147
179
 
148
180
  value = rb_funcall(value, id_to_s, 0);
149
- utils_class = rb_const_get(rb_const_get(rb_cObject, id_temple), id_utils);
150
- value = rb_funcall(utils_class, id_escape_html, 1, value);
181
+ Check_Type(value, T_STRING);
182
+ if (houdini_escape_html(&ob, (const uint8_t *)RSTRING_PTR(value), RSTRING_LEN(value))) {
183
+ value = rb_enc_str_new(ob.ptr, ob.size, rb_utf8_encoding());
184
+ gh_buf_free(&ob);
185
+ }
151
186
 
152
187
  rb_ary_push(buf, rb_const_get(rb_mAttributeBuilder, id_space));
153
188
  rb_ary_push(buf, key);
@@ -160,8 +195,11 @@ put_attribute(VALUE buf, VALUE attr_quote, VALUE key, VALUE value)
160
195
  static void
161
196
  build_attribute(VALUE buf, VALUE attr_quote, int is_html, VALUE key, VALUE value)
162
197
  {
163
- const char *key_cstr = StringValueCStr(key);
164
- if (strcmp(key_cstr, "class") == 0) {
198
+ if (!RB_TYPE_P(key, T_STRING)) {
199
+ key = rb_funcall(key, id_to_s, 0);
200
+ }
201
+ Check_Type(key, T_STRING);
202
+ if (RSTRING_LEN(key) == 5 && memcmp(RSTRING_PTR(key), "class", 5) == 0) {
165
203
  long len;
166
204
 
167
205
  Check_Type(value, T_ARRAY);
@@ -177,7 +215,7 @@ build_attribute(VALUE buf, VALUE attr_quote, int is_html, VALUE key, VALUE value
177
215
  rb_funcall(ary, id_uniq_bang, 0);
178
216
  put_attribute(buf, attr_quote, key, rb_ary_join(ary, rb_const_get(rb_mAttributeBuilder, id_space)));
179
217
  }
180
- } else if (strcmp(key_cstr, "id") == 0) {
218
+ } else if (RSTRING_LEN(key) == 2 && memcmp(RSTRING_PTR(key), "id", 2) == 0) {
181
219
  long len = RARRAY_LEN(value);
182
220
 
183
221
  Check_Type(value, T_ARRAY);
@@ -250,10 +288,6 @@ Init_attribute_builder(void)
250
288
  id_sort_bang = rb_intern("sort!");
251
289
  id_uniq_bang = rb_intern("uniq!");
252
290
  id_merge_bang = rb_intern("merge!");
253
- id_temple = rb_intern("Temple");
254
- id_utils = rb_intern("Utils");
255
- id_escape_html = rb_intern("escape_html");
256
- id_gsub = rb_intern("gsub");
257
291
  id_to_s = rb_intern("to_s");
258
292
 
259
293
  id_id = rb_intern("ID");
@@ -261,7 +295,7 @@ Init_attribute_builder(void)
261
295
  id_underscore = rb_intern("UNDERSCORE");
262
296
  id_hyphen = rb_intern("HYPHEN");
263
297
  id_space = rb_intern("SPACE");
264
- id_equal = rb_intern("=");
298
+ id_equal = rb_intern("EQUAL");
265
299
 
266
300
  rb_const_set(rb_mAttributeBuilder, id_id, rb_obj_freeze(rb_str_new_cstr("id")));
267
301
  rb_const_set(rb_mAttributeBuilder, id_class, rb_obj_freeze(rb_str_new_cstr("class")));
@@ -269,6 +303,4 @@ Init_attribute_builder(void)
269
303
  rb_const_set(rb_mAttributeBuilder, id_hyphen, rb_obj_freeze(rb_str_new_cstr("-")));
270
304
  rb_const_set(rb_mAttributeBuilder, id_space, rb_obj_freeze(rb_str_new_cstr(" ")));
271
305
  rb_const_set(rb_mAttributeBuilder, id_equal, rb_obj_freeze(rb_str_new_cstr("=")));
272
-
273
- rb_require("temple");
274
306
  }
@@ -1,4 +1,16 @@
1
1
  require 'mkmf'
2
2
 
3
3
  $CFLAGS << ' -Wall -W'
4
+ houdini_dir = File.expand_path('../../vendor/houdini', __dir__)
5
+ $INCFLAGS << " -I#{houdini_dir}"
6
+
7
+ $srcs = %w[attribute_builder.c]
8
+ %w[
9
+ buffer.c
10
+ houdini_html_e.c
11
+ ].each do |c|
12
+ FileUtils.ln_s(File.join(houdini_dir, c), c, force: true)
13
+ $srcs << c
14
+ end
15
+
4
16
  create_makefile('faml/attribute_builder')
data/faml.gemspec CHANGED
@@ -13,7 +13,7 @@ Gem::Specification.new do |spec|
13
13
  spec.homepage = "https://github.com/eagletmt/faml"
14
14
  spec.license = "MIT"
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0")
16
+ spec.files = `git ls-files -z`.split("\x0") + `git -C vendor/houdini ls-files -z`.split("\x0").map { |path| "vendor/houdini/#{path}" }
17
17
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
18
18
  spec.extensions = ['ext/attribute_builder/extconf.rb']
19
19
  spec.test_files = spec.files.grep(%r{^(test|spec|features|incompatibilities)/})
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 4.0.0"
6
- gem "rspec-rails"
6
+ gem "rspec-rails", ">= 3.2.0"
7
7
  gem "sqlite3"
8
8
 
9
9
  gemspec :path => "../"
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 4.1.0"
6
- gem "rspec-rails"
6
+ gem "rspec-rails", ">= 3.2.0"
7
7
  gem "sqlite3"
8
8
 
9
9
  gemspec :path => "../"
@@ -3,7 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", "~> 4.2.0"
6
- gem "rspec-rails"
6
+ gem "rspec-rails", ">= 3.2.0"
7
7
  gem "sqlite3"
8
8
 
9
9
  gemspec :path => "../"
@@ -3,8 +3,9 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "rails", :git => "https://github.com/rails/rails"
6
- gem "rspec-rails"
6
+ gem "rspec-rails", ">= 3.2.0"
7
7
  gem "sqlite3"
8
8
  gem "arel", :git => "https://github.com/rails/arel"
9
+ gem "rack", :git => "https://github.com/rack/rack"
9
10
 
10
11
  gemspec :path => "../"
@@ -1,7 +1,7 @@
1
1
  # Incompatibilities
2
2
  ## Versions
3
3
  - Haml 4.0.7
4
- - Faml 0.3.0
4
+ - Faml 0.3.2
5
5
  - Hamlit 1.7.2
6
6
 
7
7
  ## Table of contents
data/lib/faml.rb CHANGED
@@ -1,10 +1,10 @@
1
- require 'faml/engine'
2
- require 'faml/tilt'
3
- require 'faml/version'
1
+ require_relative 'faml/engine'
2
+ require_relative 'faml/tilt'
3
+ require_relative 'faml/version'
4
4
 
5
5
  begin
6
6
  gem 'rails'
7
7
  require 'rails'
8
- require 'faml/railtie'
8
+ require_relative 'faml/railtie'
9
9
  rescue LoadError
10
10
  end
data/lib/faml/cli.rb CHANGED
@@ -1,4 +1,4 @@
1
- require 'faml'
1
+ require_relative '../faml'
2
2
  require 'thor'
3
3
 
4
4
  module Faml
data/lib/faml/compiler.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  require 'ripper'
2
2
  require 'temple'
3
3
  require 'haml_parser/ast'
4
- require 'faml/error'
5
- require 'faml/filter_compilers'
6
- require 'faml/helpers'
7
- require 'faml/rails_helpers'
8
- require 'faml/ruby_syntax_checker'
9
- require 'faml/static_hash_parser'
10
- require 'faml/text_compiler'
4
+ require_relative 'error'
5
+ require_relative 'filter_compilers'
6
+ require_relative 'helpers'
7
+ require_relative 'rails_helpers'
8
+ require_relative 'ruby_syntax_checker'
9
+ require_relative 'static_hash_parser'
10
+ require_relative 'text_compiler'
11
11
 
12
12
  module Faml
13
13
  class Compiler < Temple::Parser
data/lib/faml/engine.rb CHANGED
@@ -1,8 +1,8 @@
1
- require 'temple'
2
- require 'faml/compiler'
3
- require 'faml/html'
4
- require 'faml/newline'
5
1
  require 'haml_parser/parser'
2
+ require 'temple'
3
+ require_relative 'compiler'
4
+ require_relative 'html'
5
+ require_relative 'newline'
6
6
 
7
7
  module Faml
8
8
  class Engine < Temple::Engine
@@ -1,4 +1,4 @@
1
- require 'faml/error'
1
+ require_relative 'error'
2
2
 
3
3
  module Faml
4
4
  module FilterCompilers
@@ -28,14 +28,14 @@ module Faml
28
28
  end
29
29
  end
30
30
 
31
- require 'faml/filter_compilers/cdata'
32
- require 'faml/filter_compilers/coffee'
33
- require 'faml/filter_compilers/css'
34
- require 'faml/filter_compilers/escaped'
35
- require 'faml/filter_compilers/javascript'
36
- require 'faml/filter_compilers/markdown'
37
- require 'faml/filter_compilers/plain'
38
- require 'faml/filter_compilers/preserve'
39
- require 'faml/filter_compilers/ruby'
40
- require 'faml/filter_compilers/sass'
41
- require 'faml/filter_compilers/scss'
31
+ require_relative 'filter_compilers/cdata'
32
+ require_relative 'filter_compilers/coffee'
33
+ require_relative 'filter_compilers/css'
34
+ require_relative 'filter_compilers/escaped'
35
+ require_relative 'filter_compilers/javascript'
36
+ require_relative 'filter_compilers/markdown'
37
+ require_relative 'filter_compilers/plain'
38
+ require_relative 'filter_compilers/preserve'
39
+ require_relative 'filter_compilers/ruby'
40
+ require_relative 'filter_compilers/sass'
41
+ require_relative 'filter_compilers/scss'