slim 2.1.0 → 3.0.0.beta.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +10 -24
  3. data/CHANGES +8 -0
  4. data/Gemfile +5 -7
  5. data/README.jp.md +29 -31
  6. data/README.md +34 -34
  7. data/Rakefile +9 -7
  8. data/benchmarks/context.rb +3 -3
  9. data/benchmarks/run-benchmarks.rb +9 -9
  10. data/benchmarks/view.slim +1 -1
  11. data/doc/jp/logic_less.md +7 -7
  12. data/doc/logic_less.md +7 -7
  13. data/lib/slim/command.rb +6 -16
  14. data/lib/slim/embedded.rb +10 -13
  15. data/lib/slim/engine.rb +21 -23
  16. data/lib/slim/erb_converter.rb +2 -1
  17. data/lib/slim/include.rb +2 -2
  18. data/lib/slim/logic_less.rb +1 -2
  19. data/lib/slim/logic_less/filter.rb +3 -3
  20. data/lib/slim/parser.rb +43 -19
  21. data/lib/slim/smart.rb +3 -3
  22. data/lib/slim/smart/escaper.rb +1 -1
  23. data/lib/slim/smart/filter.rb +3 -3
  24. data/lib/slim/smart/parser.rb +6 -4
  25. data/lib/slim/splat/builder.rb +9 -4
  26. data/lib/slim/splat/filter.rb +3 -4
  27. data/lib/slim/template.rb +5 -5
  28. data/lib/slim/translator.rb +12 -13
  29. data/lib/slim/version.rb +1 -1
  30. data/slim.gemspec +3 -1
  31. data/test/core/helper.rb +3 -3
  32. data/test/core/test_code_escaping.rb +14 -14
  33. data/test/core/test_code_evaluation.rb +1 -1
  34. data/test/core/test_code_output.rb +1 -1
  35. data/test/core/test_embedded_engines.rb +16 -16
  36. data/test/core/test_encoding.rb +4 -4
  37. data/test/core/test_html_attributes.rb +9 -9
  38. data/test/core/test_html_structure.rb +20 -20
  39. data/test/core/test_parser_errors.rb +1 -1
  40. data/test/core/test_pretty.rb +4 -4
  41. data/test/core/test_ruby_errors.rb +5 -5
  42. data/test/core/test_slim_template.rb +2 -2
  43. data/test/core/test_tabs.rb +5 -5
  44. data/test/core/test_thread_options.rb +4 -4
  45. data/test/core/test_unicode.rb +11 -13
  46. data/test/include/test_include.rb +2 -2
  47. data/test/literate/TESTS.md +37 -8
  48. data/test/literate/helper.rb +2 -2
  49. data/test/logic_less/test_logic_less.rb +37 -37
  50. data/test/rails/app/controllers/slim_controller.rb +3 -3
  51. data/test/rails/config/initializers/session_store.rb +1 -1
  52. data/test/rails/config/routes.rb +4 -4
  53. data/test/rails/test/test_slim.rb +9 -15
  54. data/test/smart/test_smart_text.rb +5 -9
  55. data/test/translator/test_translator.rb +14 -14
  56. metadata +7 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c3e6e5e0191a26434040102229ea08970f481344
4
- data.tar.gz: 4b8485efd9294318590d5472336ed7f6aef1f319
3
+ metadata.gz: 30e108dd9c5cf0ddce9202cbf6dc2a0e70e55713
4
+ data.tar.gz: 1eb064293baadcf534af30e0a822dd3eab1bd16a
5
5
  SHA512:
6
- metadata.gz: 4dc486456eb27e9a02ce53ea211490222e9cc04f8c13ee4204688dcaceed5a3618c06815ba409863437138e30e73d0c6dcd53838998026b37fa314fad7c52362
7
- data.tar.gz: 4768df1dd287abaf00154fb0346fba824602642956dd4116084069398a7a584ee6b352dc906f82c1f0ab825c8678c1579afd490b076248c119044e79ad31cfd6
6
+ metadata.gz: 46d607c3b55f54dca6f5770577f0a92ec5ede81efc8fbf43ca8bdf26ec2ac7753080e27c0601899d64e15aa85574576269a1e6f034a8144c09fa76be49977840
7
+ data.tar.gz: 6a84ff0d56e26954af4360dd54b76faf21173ad5250005bfcd3207316b57e35afe96ad3329196d56522c6c8db911ba3d3a42e69641a352a87df07b615dd38de3
data/.travis.yml CHANGED
@@ -1,52 +1,38 @@
1
1
  language: ruby
2
+
2
3
  rvm:
3
- - 1.8.7
4
4
  - 1.9.3
5
5
  - 2.0.0
6
6
  - 2.1.0
7
7
  - ruby-head
8
8
  - jruby-19mode
9
9
  - rbx-2
10
+
11
+ sudo: false
12
+
13
+ script: "bundle exec rake $TASK"
14
+
10
15
  env:
11
16
  - "TASK=test:core_and_plugins TILT=master"
12
17
  - "TASK=test:core_and_plugins TILT=1.3.7"
13
18
  - "TASK=test:core_and_plugins TILT=1.4.1"
14
19
  - "TASK=test:core_and_plugins TILT=2.0.1"
15
20
  - "TASK=test:rails RAILS=master"
16
- - "TASK=test:rails RAILS=3.0.20"
17
21
  - "TASK=test:rails RAILS=3.1.12 TILT=1.3.4"
18
- - "TASK=test:rails RAILS=3.2.19 TILT=1.3.4"
19
- - "TASK=test:rails RAILS=4.0.9"
20
- - "TASK=test:rails RAILS=4.1.5"
22
+ - "TASK=test:rails RAILS=3.2.21 TILT=1.3.4"
23
+ - "TASK=test:rails RAILS=4.0.12"
24
+ - "TASK=test:rails RAILS=4.1.8"
21
25
  - "TASK=test:sinatra SINATRA=master"
22
26
  - "TASK=test:sinatra SINATRA=1.3.6"
23
27
  - "TASK=test:sinatra SINATRA=1.4.5"
24
28
  - "TASK=bench iterations=10000"
25
29
  - "TASK=bench slow=1 iterations=1000"
30
+
26
31
  matrix:
27
32
  exclude:
28
- # Test Rails master only on 1.9.3+ Rubies
29
- - rvm: 1.8.7
30
- env: "TASK=test:rails RAILS=master"
31
- - rvm: jruby-18mode
32
- env: "TASK=test:rails RAILS=master"
33
33
  - rvm: rbx-2
34
34
  env: "TASK=test:rails RAILS=master"
35
- - rvm: 1.8.7
36
- env: "TASK=test:rails RAILS=4.0.9"
37
- - rvm: 1.8.7
38
- env: "TASK=test:rails RAILS=4.1.5"
39
- - rvm: jruby-18mode
40
- env: "TASK=test:rails RAILS=4.0.9"
41
- - rvm: jruby-18mode
42
- env: "TASK=test:rails RAILS=4.1.5"
43
35
  allow_failures:
44
36
  - env: "TASK=test:core_and_plugins TILT=master"
45
37
  - env: "TASK=test:rails RAILS=master"
46
- - env: "TASK=test:sinatra SINATRA=master"
47
- rvm: 2.0.0
48
38
  - rvm: ruby-head
49
- # Rails master needs newest bundler
50
- before_install:
51
- - gem update bundler
52
- script: "bundle exec rake $TASK"
data/CHANGES CHANGED
@@ -1,3 +1,11 @@
1
+ 3.0.0
2
+
3
+ * Drop 1.8.7 support
4
+ * Deprecate default_options in favor of options
5
+ * Support xml pretty printing with format: :xml
6
+ * Deprecate `='`, `=='` and `tag'` syntax for trailing whitespace. Use `=<` etc. instead.
7
+ * slimrb: Remove deprecated plugin options -l and -t
8
+
1
9
  2.1.0
2
10
 
3
11
  * Parser: Require pairwise braces in quoted attributes
data/Gemfile CHANGED
@@ -3,15 +3,13 @@ source 'https://rubygems.org/'
3
3
  gemspec
4
4
 
5
5
  if ENV['TRAVIS'] || ENV['TEMPLE'] == 'master'
6
- gem 'temple', :github => 'judofyr/temple'
7
- elsif ENV['TEMPLE_PATH']
8
- gem 'temple', :path => ENV['TEMPLE_PATH']
6
+ gem 'temple', github: 'judofyr/temple'
9
7
  end
10
8
 
11
9
  if ENV['TILT']
12
10
  if ENV['TILT'] == 'master'
13
- gem 'opal', :github => 'opal/opal' if RUBY_VERSION > '1.9'
14
- gem 'tilt', :github => 'rtomayko/tilt'
11
+ gem 'opal', github: 'opal/opal' if RUBY_VERSION > '1.9'
12
+ gem 'tilt', github: 'rtomayko/tilt'
15
13
  else
16
14
  gem 'tilt', "= #{ENV['TILT']}"
17
15
  end
@@ -19,7 +17,7 @@ end
19
17
 
20
18
  if ENV['RAILS']
21
19
  if ENV['RAILS'] == 'master'
22
- gem 'rails', :github => 'rails/rails'
20
+ gem 'rails', github: 'rails/rails'
23
21
  else
24
22
  gem 'rails', "= #{ENV['RAILS']}"
25
23
  end
@@ -35,7 +33,7 @@ end
35
33
  if ENV['SINATRA']
36
34
  gem 'rack-test'
37
35
  if ENV['SINATRA'] == 'master'
38
- gem 'sinatra', :github => 'sinatra/sinatra'
36
+ gem 'sinatra', github: 'sinatra/sinatra'
39
37
  else
40
38
  gem 'sinatra', "= #{ENV['SINATRA']}"
41
39
  end
data/README.jp.md CHANGED
@@ -23,7 +23,7 @@ Slim は 不可解にならないように view の構文を本質的な部品
23
23
  * ERB/Erubis に匹敵するスピード
24
24
  * Rails のストリーミングに対応
25
25
  * 全てのメジャーフレームワークが対応 (Rails, Sinatra, ...)
26
- * Ruby 1.9 では タグや属性の Unicode に完全対応
26
+ * タグや属性の Unicode に完全対応
27
27
  * Markdown や Textile のような埋め込みエンジン
28
28
 
29
29
  ## リンク
@@ -134,7 +134,7 @@ body
134
134
  <body><p>これはテキストブロックのテストです。</p></body>
135
135
  ~~~
136
136
 
137
- ブロックの左端はパイプ +1 スペースのインデントに設定されています。
137
+ ブロックの左端はパイプ +1 スペースのインデントに設定されています。
138
138
  追加のスペースはコピーされます。
139
139
 
140
140
  ~~~ slim
@@ -470,7 +470,7 @@ a data-title="help" data-content="極めて長い長い長いヘルプテキス
470
470
  #### Ruby コードを用いた属性
471
471
 
472
472
  `=` の後に直接 Ruby コードを書きます。コードにスペースが含まれる場合,
473
- `(...)` の括弧でコードを囲まなければなりません。ハッシュを `{...}` に, 配列を `[...]` に書くこともできます。
473
+ `(...)` の括弧でコードを囲まなければなりません。ハッシュを `{...}` に, 配列を `[...]` に書くこともできます。
474
474
 
475
475
  ~~~ slim
476
476
  body
@@ -550,7 +550,7 @@ a class=:menu,:highlight
550
550
  属性の結合 (Slim オプション `:merge_attrs` 参照) に対応するハッシュ属性には `Array` を与えることもできます。
551
551
 
552
552
  ~~~ slim
553
- .first *{:class => [:second, :third]} テキスト
553
+ .first *{class: [:second, :third]} テキスト
554
554
  ~~~
555
555
 
556
556
  レンダリング結果
@@ -567,7 +567,7 @@ div class="first second third"
567
567
  ~~~ slim
568
568
  ruby:
569
569
  def a_unless_current
570
- @page_current ? {:tag => 'span'} : {:tag => 'a', :href => 'http://slim-lang.com/'}
570
+ @page_current ? {tag: 'span'} : {tag: 'a', href: 'http://slim-lang.com/'}
571
571
  end
572
572
  - @page_current = true
573
573
  *a_unless_current リンク
@@ -588,7 +588,7 @@ ruby:
588
588
  `:shortcut` オプションを設定することで独自のタグショートカットを定義できます。
589
589
 
590
590
  ~~~ ruby
591
- Slim::Engine.set_default_options :shortcut => {'c' => {:tag => 'container'}, '#' => {:attr => 'id'}, '.' => {:attr => 'class'} }
591
+ Slim::Engine.set_options shortcut: {'c' => {tag: 'container'}, '#' => {attr: 'id'}, '.' => {attr: 'class'} }
592
592
  ~~~
593
593
 
594
594
  Slim コードの中でこの様に使用できます。
@@ -610,7 +610,7 @@ c.content テキスト
610
610
  例として `&` で作った type 属性付きの input 要素のショートカットを作成し追加します。
611
611
 
612
612
  ~~~ ruby
613
- Slim::Engine.set_default_options :shortcut => {'&' => {:tag => 'input', :attr => 'type'}, '#' => {:attr => 'id'}, '.' => {:attr => 'class'}}
613
+ Slim::Engine.set_options shortcut: {'&' => {tag: 'input', attr: 'type'}, '#' => {attr: 'id'}, '.' => {attr: 'class'}}
614
614
  ~~~
615
615
 
616
616
  Slim コードの中でこの様に使用できます。
@@ -632,7 +632,7 @@ Slim コードの中でこの様に使用できます。
632
632
  別の例として `@` で作った role 属性のショートカットを作成し追加します。
633
633
 
634
634
  ~~~ ruby
635
- Slim::Engine.set_default_options :shortcut => {'@' => 'role', '#' => 'id', '.' => 'class'}
635
+ Slim::Engine.set_options shortcut: {'@' => 'role', '#' => 'id', '.' => 'class'}
636
636
  ~~~
637
637
 
638
638
  Slim コードの中でこの様に使用できます。
@@ -650,7 +650,7 @@ Slim コードの中でこの様に使用できます。
650
650
  1つのショートカットを使って複数の属性を設定することもできます。
651
651
 
652
652
  ~~~ ruby
653
- Slim::Engine.set_default_options :shortcut => {'@' => {:attr => %w(data-role role)}}
653
+ Slim::Engine.set_options shortcut: {'@' => {attr: %w(data-role role)}}
654
654
  ~~~
655
655
 
656
656
  Slim の中で次のように使用し
@@ -702,7 +702,7 @@ module Helpers
702
702
  # Rails の場合には capture メソッドを使う
703
703
  "<h1>#{capture(&block)}</h1>"
704
704
  else
705
- # フレームワークなしで Slim を使う場合(Tilt の場合),
705
+ # フレームワークなしで Slim を使う場合(Tilt の場合),
706
706
  # ただ出力する
707
707
  "<h1>#{yield}</h1>"
708
708
  end
@@ -859,7 +859,7 @@ p: markdown: Tag with **inline** markdown!
859
859
  埋め込みエンジンは Slim の `Slim::Embedded` フィルタのオプションで直接設定されます。例:
860
860
 
861
861
  ~~~ ruby
862
- Slim::Embedded.default_options[:markdown] = {:auto_ids => false}
862
+ Slim::Embedded.options[:markdown] = {auto_ids: false}
863
863
  ~~~
864
864
 
865
865
  ## Slim の設定
@@ -871,16 +871,16 @@ Slim を設定する方法はコンパイル機構に少し依存します。(Ra
871
871
 
872
872
  ~~~ ruby
873
873
  # デバック用に html をきれいにインデントし属性をソートしない (Ruby 1.8)
874
- Slim::Engine.set_default_options :pretty => true. :sort_attrs => false
874
+ Slim::Engine.set_options pretty: true. sort_attrs: false
875
875
 
876
876
  # デバック用に html をきれいにインデントし属性をソートしない (Ruby 1.9)
877
- Slim::Engine.set_default_options pretty: true, sort_attrs: false
877
+ Slim::Engine.set_options pretty: true, sort_attrs: false
878
878
  ~~~
879
879
 
880
880
  ハッシュで直接オプションにアクセスすることもできます:
881
881
 
882
882
  ~~~ ruby
883
- Slim::Engine.default_options[:pretty] = true
883
+ Slim::Engine.options[:pretty] = true
884
884
  ~~~
885
885
 
886
886
  ### 実行時のオプション設定
@@ -898,7 +898,7 @@ Slim::Template.new('template.slim', optional_option_hash).render(scope)
898
898
  Slim::Engine.with_options(option_hash) do
899
899
  # ここで作成される Slim エンジンは option_hash を使用します
900
900
  # Rails での使用例:
901
- render :page, :layout => true
901
+ render :page, layout: true
902
902
  end
903
903
  ~~~
904
904
 
@@ -906,19 +906,19 @@ Rails ではコンパイルされたテンプレートエンジンのコード
906
906
 
907
907
  ~~~ slim
908
908
  # 最初のレンダリング呼び出し
909
- Slim::Engine.with_options(:pretty => true) do
910
- render :page, :layout => true
909
+ Slim::Engine.with_options(pretty: true) do
910
+ render :page, layout: true
911
911
  end
912
912
 
913
913
  # 2回目のレンダリング呼び出し
914
- Slim::Engine.with_options(:pretty => false) do
915
- render :page, :layout => true # :pretty is still true because it is cached
914
+ Slim::Engine.with_options(pretty: false) do
915
+ render :page, layout: true # :pretty is still true because it is cached
916
916
  end
917
917
  ~~~
918
918
 
919
919
  ### 可能なオプション
920
920
 
921
- 次のオプションが `Slim::Engine` によって用意され `Slim::Engine.set_default_options` で設定することができます。
921
+ 次のオプションが `Slim::Engine` によって用意され `Slim::Engine.set_options` で設定することができます。
922
922
  沢山ありますが良いことに, Slim はもし誤った設定キーを使用しようとした場合キーをチェックしエラーを報告します。
923
923
 
924
924
 
@@ -928,7 +928,7 @@ end
928
928
  | 数値 | :tabsize | 4 | 1 タブあたりのスペース数 (構文解析で利用されます) |
929
929
  | 文字列 | :encoding | "utf-8" | テンプレートのエンコーディングを設定 |
930
930
  | 文字列 | :default_tag | "div" | タグ名が省略されている場合デフォルトのタグとして使用される |
931
- | ハッシュ | :shortcut | \{'.' => {:attr => 'class'}, '#' => {:attr => 'id'}} | 属性のショートカット |
931
+ | ハッシュ | :shortcut | \{'.' => {attr: 'class'}, '#' => {attr: 'id'}} | 属性のショートカット |
932
932
  | ハッシュ | :code_attr_delims | \{'(' => ')', '[' => ']', '{' => '}'} | Ruby コードの属性区切り文字 |
933
933
  | ハッシュ | :attr_list_delims | \{'(' => ')', '[' => ']', '{' => '}'} | 属性リスト区切り文字 |
934
934
  | 配列&lt;シンボル,文字列&gt; | :enable_engines | nil <i>(すべて可)</i> | 有効な埋め込みエンジンリスト (ホワイトリスト) |
@@ -936,7 +936,7 @@ end
936
936
  | 真偽値 | :disable_capture | false (Rails では true) | ブロック内キャプチャ無効 (ブロックはデフォルトのバッファに書き込む) |
937
937
  | 真偽値 | :disable_escape | false | 文字列の自動エスケープ無効 |
938
938
  | 真偽値 | :use_html_safe | false (Rails では true) | ActiveSupport の String# html_safe? を使う (:disable_escape と一緒に機能する) |
939
- | シンボル | :format | :xhtml | html の出力フォーマット (対応フォーマット :xhtml, :html4, :html5, :html) |
939
+ | シンボル | :format | :xhtml | html の出力フォーマット (対応フォーマット :html, :xhtml, :xml) |
940
940
  | 文字列 | :attr_quote | '"' | html の属性を囲む文字 (' または " が可能) |
941
941
  | ハッシュ | :merge_attrs | \{'class' => ' '} | 複数の html 属性が与えられた場合結合に使われる文字列 (例: class="class1 class2") |
942
942
  | 配列&lt;文字列&gt; | :hyphen_attrs | %w(data) | 属性にハッシュが与えられた場合ハイフンつなぎされます。(例: data={a:1, b:2} は data-a="1" data-b="2" のように) |
@@ -944,7 +944,7 @@ end
944
944
  | シンボル | :js_wrapper | nil | :comment, :cdata や :both で JavaScript をラップします。:guess を指定することで :format オプションに基いて設定することもできます |
945
945
  | 真偽値 | :pretty | false | 綺麗な html インデント <b>(遅くなります!)</b> |
946
946
  | 文字列 | :indent | ' ' | インデントに使用される文字列 |
947
- | 真偽値 | :streaming | false (Rails > 3.1 では true) | ストリーミング出力の有効化 |
947
+ | 真偽値 | :streaming | false (Rails では true) | ストリーミング出力の有効化 |
948
948
  | Class | :generator | Temple::Generators::ArrayBuffer/ RailsOutputBuffer | Temple コードジェネレータ (デフォルトのジェネレータは配列バッファを生成します) |
949
949
  | 文字列 | :buffer | '_buf' (Rails では '@output_buffer') | バッファに使用される変数 |
950
950
 
@@ -959,9 +959,9 @@ Slim や Temple のアーキテクチャについてよく知っている開発
959
959
  継承メカニズムを採用しています。オプションの優先順位は次のとおりです:
960
960
 
961
961
  1. `Slim::Template` オプションはエンジン初期化時に適用されます
962
- 2. `Slim::Template.default_options`
963
- 3. `Slim::Engine.thread_options`, `Slim::Engine.default_options`
964
- 5. パーサ/フィルタ/ジェネレータ `thread_options`, `default_options` (例: `Slim::Parser`, `Slim::Compiler`)
962
+ 2. `Slim::Template.options`
963
+ 3. `Slim::Engine.thread_options`, `Slim::Engine.options`
964
+ 5. パーサ/フィルタ/ジェネレータ `thread_options`, `options` (例: `Slim::Parser`, `Slim::Compiler`)
965
965
 
966
966
  `Temple::Engine` のようにスーパークラスのオプションを設定することも可能です。しかしこれはすべての Temple テンプレートエンジンに影響します。
967
967
 
@@ -1037,15 +1037,13 @@ Usage: slimrb [options]
1037
1037
  -e, --erb Convert to ERB
1038
1038
  --rails Generate rails compatible code (Implies --compile)
1039
1039
  -r library Load library or plugin with -r slim/plugin
1040
- -t, --translator Enable translator plugin
1041
- -l, --logic-less Enable logic less plugin
1042
1040
  -p, --pretty Produce pretty html
1043
1041
  -o, --option name=code Set slim option
1044
1042
  -h, --help Show this message
1045
1043
  -v, --version Print version
1046
1044
  </pre>
1047
1045
 
1048
- 'slimrb' で起動し, コードをタイプし Ctrl-d で EOF を送ります。Windows のコマンドプロンプトでは Ctrl-z で EOF を送ります。使い方例:
1046
+ 'slimrb' で起動し, コードをタイプし Ctrl-d で EOF を送ります。Windows のコマンドプロンプトでは Ctrl-z で EOF を送ります。使い方例:
1049
1047
 
1050
1048
  <pre>
1051
1049
  $ slimrb
@@ -1115,7 +1113,7 @@ Travis-CI は継続的インテグレーションテストに利用されてい
1115
1113
 
1116
1114
  Slim はすべての主要な Ruby 実装で動作します:
1117
1115
 
1118
- * Ruby 1.8.7, 1.9.3 および 2.0.0
1116
+ * Ruby 1.8.7, 1.9.3, 2.0.0 および 2.1.0
1119
1117
  * Ruby EE
1120
1118
  * JRuby 1.9 mode
1121
1119
  * Rubinius 2.0
@@ -1130,7 +1128,7 @@ $ git clone git://github.com/slim-template/slim
1130
1128
 
1131
1129
  魔法をかけた後 pull request を送ってください。私たちは pull request が大好きです!
1132
1130
 
1133
- Ruby の 2.0.0, 1.9.3 と 1.8.7 でテストをすることを覚えておいてください。
1131
+ Ruby の 2.1.0, 2.0.0, 1.9.3 と 1.8.7 でテストをすることを覚えておいてください。
1134
1132
 
1135
1133
  もしドキュメントの不足を見つけたら, README.md をアップデートして私たちを助けて下さい。Slim に割く時間がないが, 私たちが知るべきものを何か見つけた場合には issue を送ってください。
1136
1134
 
data/README.md CHANGED
@@ -23,7 +23,7 @@ A short list of the features...
23
23
  * Comparable speed to ERB/Erubis
24
24
  * Streaming support in Rails
25
25
  * Supported by all major frameworks (Rails, Sinatra, ...)
26
- * Full Unicode support for tags and attributes on Ruby 1.9
26
+ * Full Unicode support for tags and attributes
27
27
  * Embedded engines like Markdown and Textile
28
28
 
29
29
  ## Links
@@ -199,14 +199,14 @@ The equal sign tells Slim it's a Ruby call that produces output to add to the bu
199
199
 
200
200
  If your line ends with comma `,` (e.g because of a method call) you don't need the additional backslash before the linebreak. For trailing or leading whitespace the modifiers `>` and `<` are supported.
201
201
 
202
- * Output with trailing white space `=>`. Same as the single equal sign (`=`), except that it adds a trailing white space. The legacy syntax `='` is also supported.
202
+ * Output with trailing white space `=>`. Same as the single equal sign (`=`), except that it adds a trailing white space.
203
203
  * Output with leading white space `=<`. Same as the single equal sign (`=`), except that it adds a leading white space.
204
204
 
205
205
  ### Output without HTML escaping `==`
206
206
 
207
207
  Same as the single equal sign (`=`), but does not go through the `escape_html` method. For trailing or leading whitespace the modifiers `>` and `<` are supported.
208
208
 
209
- * Output without HTML escaping and trailing white space `==>`. Same as the double equal sign (`==`), except that it adds a trailing white space. The legacy syntax `=='` is also supported.
209
+ * Output without HTML escaping and trailing white space `==>`. Same as the double equal sign (`==`), except that it adds a trailing white space.
210
210
  * Output without HTML escaping and leading white space `==<`. Same as the double equal sign (`==`), except that it adds a leading white space.
211
211
 
212
212
  ### Code comment `/`
@@ -550,7 +550,7 @@ You can also use methods or instance variables which return a hash as shown here
550
550
  The hash attributes which support attribute merging (see Slim option `:merge_attrs`) can be given as an `Array`
551
551
 
552
552
  ~~~ slim
553
- .first *{:class => [:second, :third]} Text
553
+ .first *{class: [:second, :third]} Text
554
554
  ~~~
555
555
 
556
556
  renders as
@@ -567,7 +567,7 @@ with the :tag key.
567
567
  ~~~ slim
568
568
  ruby:
569
569
  def a_unless_current
570
- @page_current ? {:tag => 'span'} : {:tag => 'a', :href => 'http://slim-lang.com/'}
570
+ @page_current ? {tag: 'span'} : {tag: 'a', href: 'http://slim-lang.com/'}
571
571
  end
572
572
  - @page_current = true
573
573
  *a_unless_current Link
@@ -588,7 +588,7 @@ renders as
588
588
  You can define custom tag shortcuts by setting the option `:shortcut`.
589
589
 
590
590
  ~~~ ruby
591
- Slim::Engine.set_default_options :shortcut => {'c' => {:tag => 'container'}, '#' => {:attr => 'id'}, '.' => {:attr => 'class'} }
591
+ Slim::Engine.set_options shortcut: {'c' => {tag: 'container'}, '#' => {attr: 'id'}, '.' => {attr: 'class'} }
592
592
  ~~~
593
593
 
594
594
  We can use it in Slim code like this
@@ -610,7 +610,7 @@ You can define custom shortcuts (Similar to `#` for id and `.` for class).
610
610
  In this example we add `&` to create a shortcut for the input elements with type attribute.
611
611
 
612
612
  ~~~ ruby
613
- Slim::Engine.set_default_options :shortcut => {'&' => {:tag => 'input', :attr => 'type'}, '#' => {:attr => 'id'}, '.' => {:attr => 'class'}}
613
+ Slim::Engine.set_options shortcut: {'&' => {tag: 'input', attr: 'type'}, '#' => {attr: 'id'}, '.' => {attr: 'class'}}
614
614
  ~~~
615
615
 
616
616
  We can use it in Slim code like this
@@ -632,7 +632,7 @@ which renders to
632
632
  In another example we add `@` to create a shortcut for the role attribute.
633
633
 
634
634
  ~~~ ruby
635
- Slim::Engine.set_default_options :shortcut => {'@' => {:attr => 'role'}, '#' => {:attr => 'id'}, '.' => {:attr => 'class'}}
635
+ Slim::Engine.set_options shortcut: {'@' => {attr: 'role'}, '#' => {attr: 'id'}, '.' => {attr: 'class'}}
636
636
  ~~~
637
637
 
638
638
  We can use it in Slim code like this
@@ -650,7 +650,7 @@ which renders to
650
650
  You can also set multiple attributes at once using one shortcut.
651
651
 
652
652
  ~~~ ruby
653
- Slim::Engine.set_default_options :shortcut => {'@' => {:attr => %w(data-role role)}}
653
+ Slim::Engine.set_options shortcut: {'@' => {attr: %w(data-role role)}}
654
654
  ~~~
655
655
 
656
656
  We can use it in Slim code like this
@@ -859,7 +859,7 @@ Supported engines:
859
859
  The embedded engines can be configured in Slim by setting the options directly on the `Slim::Embedded` filter. Example:
860
860
 
861
861
  ~~~ ruby
862
- Slim::Embedded.default_options[:markdown] = {:auto_ids => false}
862
+ Slim::Embedded.options[:markdown] = {auto_ids: false}
863
863
  ~~~
864
864
 
865
865
  ## Configuring Slim
@@ -870,17 +870,14 @@ The way how you configure Slim depends a bit on the compilation mechanism (Rails
870
870
  ### Default options
871
871
 
872
872
  ~~~ ruby
873
- # Indent html for pretty debugging and do not sort attributes (Ruby 1.8)
874
- Slim::Engine.set_default_options :pretty => true, :sort_attrs => false
875
-
876
- # Indent html for pretty debugging and do not sort attributes (Ruby 1.9)
877
- Slim::Engine.set_default_options pretty: true, sort_attrs: false
873
+ # Indent html for pretty debugging and do not sort attributes
874
+ Slim::Engine.set_options pretty: true, sort_attrs: false
878
875
  ~~~
879
876
 
880
877
  You can also access the option hash directly:
881
878
 
882
879
  ~~~ ruby
883
- Slim::Engine.default_options[:pretty] = true
880
+ Slim::Engine.options[:pretty] = true
884
881
  ~~~
885
882
 
886
883
  ### Setting options at runtime
@@ -898,7 +895,7 @@ The other possibility is to set the options per thread which is interesting most
898
895
  Slim::Engine.with_options(option_hash) do
899
896
  # Any Slim engines which are created here use the option_hash
900
897
  # For example in Rails:
901
- render :page, :layout => true
898
+ render :page, layout: true
902
899
  end
903
900
  ~~~
904
901
 
@@ -906,19 +903,19 @@ You have to be aware that the compiled engine code and the options are cached pe
906
903
 
907
904
  ~~~ ruby
908
905
  # First render call
909
- Slim::Engine.with_options(:pretty => true) do
910
- render :page, :layout => true
906
+ Slim::Engine.with_options(pretty: true) do
907
+ render :page, layout: true
911
908
  end
912
909
 
913
910
  # Second render call
914
- Slim::Engine.with_options(:pretty => false) do
915
- render :page, :layout => true # :pretty is still true because it is cached
911
+ Slim::Engine.with_options(pretty: false) do
912
+ render :page, layout: true # :pretty is still true because it is cached
916
913
  end
917
914
  ~~~
918
915
 
919
916
  ### Available options
920
917
 
921
- The following options are exposed by the `Slim::Engine` and can be set with `Slim::Engine.set_default_options`.
918
+ The following options are exposed by the `Slim::Engine` and can be set with `Slim::Engine.set_options`.
922
919
  There are a lot of them but the good thing is, that Slim checks the configuration keys and reports an error if you try to use an invalid configuration key.
923
920
 
924
921
 
@@ -928,7 +925,7 @@ There are a lot of them but the good thing is, that Slim checks the configuratio
928
925
  | Integer | :tabsize | 4 | Number of white spaces per tab (used by the parser) |
929
926
  | String | :encoding | "utf-8" | Set encoding of template |
930
927
  | String | :default_tag | "div" | Default tag to be used if tag name is omitted |
931
- | Hash | :shortcut | \{'.' => {:attr => 'class'}, '#' => {:attr => 'id'}} | Attribute shortcuts |
928
+ | Hash | :shortcut | \{'.' => {attr: 'class'}, '#' => {attr: 'id'}} | Attribute shortcuts |
932
929
  | Hash | :code_attr_delims | \{'(' => ')', '[' => ']', '{' => '}'} | Attribute delimiters for Ruby code attributes |
933
930
  | Hash | :attr_list_delims | \{'(' => ')', '[' => ']', '{' => '}'} | Attribute list delimiter |
934
931
  | Array&lt;Symbol,String&gt; | :enable_engines | nil <i>(All enabled)</i> | List of enabled embedded engines (whitelist) |
@@ -936,7 +933,7 @@ There are a lot of them but the good thing is, that Slim checks the configuratio
936
933
  | Boolean | :disable_capture | false (true in Rails) | Disable capturing in blocks (blocks write to the default buffer |
937
934
  | Boolean | :disable_escape | false | Disable automatic escaping of strings |
938
935
  | Boolean | :use_html_safe | false (true in Rails) | Use String#html_safe? from ActiveSupport (Works together with :disable_escape) |
939
- | Symbol | :format | :xhtml | HTML output format (Possible formats :xhtml, :html4, :html5, :html) |
936
+ | Symbol | :format | :xhtml | HTML output format (Possible formats :html, :xhtml, :xml) |
940
937
  | String | :attr_quote | '"' | Character to wrap attributes in html (can be ' or ") |
941
938
  | Hash | :merge_attrs | \{'class' => ' '} | Joining character used if multiple html attributes are supplied (e.g. class="class1 class2") |
942
939
  | Array&lt;String&gt; | :hyphen_attrs | %w(data) | Attributes which will be hyphenated if a Hash is given (e.g. data={a:1,b:2} will render as data-a="1" data-b="2") |
@@ -944,7 +941,7 @@ There are a lot of them but the good thing is, that Slim checks the configuratio
944
941
  | Symbol | :js_wrapper | nil | Wrap javascript by :comment, :cdata or :both. You can also :guess the wrapper based on :format. |
945
942
  | Boolean | :pretty | false | Pretty HTML indenting, only block level tags are indented <b>(This is slower!)</b> |
946
943
  | String | :indent | ' ' | Indentation string |
947
- | Boolean | :streaming | false (true in Rails > 3.1) | Enable output streaming |
944
+ | Boolean | :streaming | false (true in Rails, see below how to disable it!) | Enable output streaming, improves the perceived performance |
948
945
  | Class | :generator | Temple::Generators::ArrayBuffer/ RailsOutputBuffer | Temple code generator (default generator generates array buffer) |
949
946
  | String | :buffer | '_buf' ('@output_buffer' in Rails) | Variable used for buffer |
950
947
 
@@ -959,9 +956,9 @@ options at different positions. Temple uses an inheritance mechanism to allow su
959
956
  options of the superclass. The option priorities are as follows:
960
957
 
961
958
  1. `Slim::Template` options passed at engine instatination
962
- 2. `Slim::Template.default_options`
963
- 3. `Slim::Engine.thread_options`, `Slim::Engine.default_options`
964
- 5. Parser/Filter/Generator `thread_options`, `default_options` (e.g `Slim::Parser`, `Slim::Compiler`)
959
+ 2. `Slim::Template.options`
960
+ 3. `Slim::Engine.thread_options`, `Slim::Engine.options`
961
+ 5. Parser/Filter/Generator `thread_options`, `options` (e.g `Slim::Parser`, `Slim::Compiler`)
965
962
 
966
963
  It is also possible to set options for superclasses like `Temple::Engine`. But this will affect all temple template engines then.
967
964
 
@@ -1015,12 +1012,17 @@ html
1015
1012
  ### Rails
1016
1013
 
1017
1014
  Rails generators are provided by [slim-rails](https://github.com/slim-template/slim-rails). slim-rails
1018
- is not necessary to use Slim in Rails though. Just install Slim and add it to your Gemfile with `gem 'slim'`.
1015
+ is not necessary to use Slim in Rails though. Just install Slim and add it to your Gemfile with `gem 'slim-rails'`.
1019
1016
  Then just use the .slim extension and you're good to go.
1020
1017
 
1021
1018
  #### Streaming
1022
1019
 
1023
- HTTP streaming is enabled by default if you use a Rails version which supports it.
1020
+ HTTP streaming is enabled by default if you use a Rails version which supports it. However you have to be aware that streaming only improves the perceived
1021
+ performance. The rendering time in total will increase. If you want to disable it use:
1022
+
1023
+ ~~~ ruby
1024
+ Slim::RailsTemplate.set_options streaming: false
1025
+ ~~~
1024
1026
 
1025
1027
  ## Tools
1026
1028
 
@@ -1037,8 +1039,6 @@ Usage: slimrb [options]
1037
1039
  -e, --erb Convert to ERB
1038
1040
  --rails Generate rails compatible code (Implies --compile)
1039
1041
  -r library Load library or plugin with -r slim/plugin
1040
- -t, --translator Enable translator plugin
1041
- -l, --logic-less Enable logic less plugin
1042
1042
  -p, --pretty Produce pretty html
1043
1043
  -o, --option name=code Set slim option
1044
1044
  -h, --help Show this message
@@ -1115,7 +1115,7 @@ Travis-CI is used for continuous integration testing: <http://travis-ci.org/slim
1115
1115
 
1116
1116
  Slim is working well on all major Ruby implementations:
1117
1117
 
1118
- * Ruby 1.8.7, 1.9.3 and 2.0.0
1118
+ * Ruby 1.9.3, 2.0.0 and 2.1.0
1119
1119
  * Ruby EE
1120
1120
  * JRuby 1.9 mode
1121
1121
  * Rubinius 2.0
@@ -1130,7 +1130,7 @@ $ git clone git://github.com/slim-template/slim
1130
1130
 
1131
1131
  Work your magic and then submit a pull request. We love pull requests!
1132
1132
 
1133
- Please remember to keep the compatibility with Ruby versions 1.8.7, 1.9.3 and 2.0.0.
1133
+ Please remember to keep the compatibility with Ruby versions 1.9.3, 2.0.0 and 2.1.0.
1134
1134
 
1135
1135
  If you find the documentation lacking, help us out and update this README.md. If you don't have the time to work on Slim, but found something we should know about, please submit an issue.
1136
1136