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.
- checksums.yaml +4 -4
- data/.travis.yml +10 -24
- data/CHANGES +8 -0
- data/Gemfile +5 -7
- data/README.jp.md +29 -31
- data/README.md +34 -34
- data/Rakefile +9 -7
- data/benchmarks/context.rb +3 -3
- data/benchmarks/run-benchmarks.rb +9 -9
- data/benchmarks/view.slim +1 -1
- data/doc/jp/logic_less.md +7 -7
- data/doc/logic_less.md +7 -7
- data/lib/slim/command.rb +6 -16
- data/lib/slim/embedded.rb +10 -13
- data/lib/slim/engine.rb +21 -23
- data/lib/slim/erb_converter.rb +2 -1
- data/lib/slim/include.rb +2 -2
- data/lib/slim/logic_less.rb +1 -2
- data/lib/slim/logic_less/filter.rb +3 -3
- data/lib/slim/parser.rb +43 -19
- data/lib/slim/smart.rb +3 -3
- data/lib/slim/smart/escaper.rb +1 -1
- data/lib/slim/smart/filter.rb +3 -3
- data/lib/slim/smart/parser.rb +6 -4
- data/lib/slim/splat/builder.rb +9 -4
- data/lib/slim/splat/filter.rb +3 -4
- data/lib/slim/template.rb +5 -5
- data/lib/slim/translator.rb +12 -13
- data/lib/slim/version.rb +1 -1
- data/slim.gemspec +3 -1
- data/test/core/helper.rb +3 -3
- data/test/core/test_code_escaping.rb +14 -14
- data/test/core/test_code_evaluation.rb +1 -1
- data/test/core/test_code_output.rb +1 -1
- data/test/core/test_embedded_engines.rb +16 -16
- data/test/core/test_encoding.rb +4 -4
- data/test/core/test_html_attributes.rb +9 -9
- data/test/core/test_html_structure.rb +20 -20
- data/test/core/test_parser_errors.rb +1 -1
- data/test/core/test_pretty.rb +4 -4
- data/test/core/test_ruby_errors.rb +5 -5
- data/test/core/test_slim_template.rb +2 -2
- data/test/core/test_tabs.rb +5 -5
- data/test/core/test_thread_options.rb +4 -4
- data/test/core/test_unicode.rb +11 -13
- data/test/include/test_include.rb +2 -2
- data/test/literate/TESTS.md +37 -8
- data/test/literate/helper.rb +2 -2
- data/test/logic_less/test_logic_less.rb +37 -37
- data/test/rails/app/controllers/slim_controller.rb +3 -3
- data/test/rails/config/initializers/session_store.rb +1 -1
- data/test/rails/config/routes.rb +4 -4
- data/test/rails/test/test_slim.rb +9 -15
- data/test/smart/test_smart_text.rb +5 -9
- data/test/translator/test_translator.rb +14 -14
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 30e108dd9c5cf0ddce9202cbf6dc2a0e70e55713
|
4
|
+
data.tar.gz: 1eb064293baadcf534af30e0a822dd3eab1bd16a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
- "TASK=test:rails RAILS=4.0.
|
20
|
-
- "TASK=test:rails RAILS=4.1.
|
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', :
|
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', :
|
14
|
-
gem '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', :
|
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', :
|
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
|
-
*
|
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 *{:
|
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 ? {:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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.
|
874
|
+
Slim::Engine.set_options pretty: true. sort_attrs: false
|
875
875
|
|
876
876
|
# デバック用に html をきれいにインデントし属性をソートしない (Ruby 1.9)
|
877
|
-
Slim::Engine.
|
877
|
+
Slim::Engine.set_options pretty: true, sort_attrs: false
|
878
878
|
~~~
|
879
879
|
|
880
880
|
ハッシュで直接オプションにアクセスすることもできます:
|
881
881
|
|
882
882
|
~~~ ruby
|
883
|
-
Slim::Engine.
|
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, :
|
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(:
|
910
|
-
render :page, :
|
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(:
|
915
|
-
render :page, :
|
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.
|
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 | \{'.' => {:
|
931
|
+
| ハッシュ | :shortcut | \{'.' => {attr: 'class'}, '#' => {attr: 'id'}} | 属性のショートカット |
|
932
932
|
| ハッシュ | :code_attr_delims | \{'(' => ')', '[' => ']', '{' => '}'} | Ruby コードの属性区切り文字 |
|
933
933
|
| ハッシュ | :attr_list_delims | \{'(' => ')', '[' => ']', '{' => '}'} | 属性リスト区切り文字 |
|
934
934
|
| 配列<シンボル,文字列> | :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 の出力フォーマット (対応フォーマット :
|
939
|
+
| シンボル | :format | :xhtml | html の出力フォーマット (対応フォーマット :html, :xhtml, :xml) |
|
940
940
|
| 文字列 | :attr_quote | '"' | html の属性を囲む文字 (' または " が可能) |
|
941
941
|
| ハッシュ | :merge_attrs | \{'class' => ' '} | 複数の html 属性が与えられた場合結合に使われる文字列 (例: class="class1 class2") |
|
942
942
|
| 配列<文字列> | :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
|
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.
|
963
|
-
3. `Slim::Engine.thread_options`, `Slim::Engine.
|
964
|
-
5. パーサ/フィルタ/ジェネレータ `thread_options`, `
|
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.
|
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
|
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.
|
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.
|
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 *{:
|
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 ? {:
|
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.
|
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.
|
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.
|
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.
|
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.
|
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
|
874
|
-
Slim::Engine.
|
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.
|
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, :
|
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(:
|
910
|
-
render :page, :
|
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(:
|
915
|
-
render :page, :
|
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.
|
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 | \{'.' => {:
|
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<Symbol,String> | :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 :
|
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<String> | :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
|
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.
|
963
|
-
3. `Slim::Engine.thread_options`, `Slim::Engine.
|
964
|
-
5. Parser/Filter/Generator `thread_options`, `
|
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.
|
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.
|
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
|
|