mega-quick-lib 0.0.1

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 (127) hide show
  1. checksums.yaml +7 -0
  2. data/mega-quick-lib.gemspec +12 -0
  3. data/slim-5.2.1/CHANGES +496 -0
  4. data/slim-5.2.1/Gemfile +43 -0
  5. data/slim-5.2.1/LICENSE +21 -0
  6. data/slim-5.2.1/README.jp.md +1276 -0
  7. data/slim-5.2.1/README.md +1313 -0
  8. data/slim-5.2.1/Rakefile +80 -0
  9. data/slim-5.2.1/bin/slimrb +6 -0
  10. data/slim-5.2.1/doc/include.md +20 -0
  11. data/slim-5.2.1/doc/jp/include.md +20 -0
  12. data/slim-5.2.1/doc/jp/logic_less.md +137 -0
  13. data/slim-5.2.1/doc/jp/smart.md +102 -0
  14. data/slim-5.2.1/doc/jp/translator.md +28 -0
  15. data/slim-5.2.1/doc/logic_less.md +137 -0
  16. data/slim-5.2.1/doc/smart.md +120 -0
  17. data/slim-5.2.1/doc/translator.md +28 -0
  18. data/slim-5.2.1/lib/slim/code_attributes.rb +68 -0
  19. data/slim-5.2.1/lib/slim/command.rb +122 -0
  20. data/slim-5.2.1/lib/slim/controls.rb +61 -0
  21. data/slim-5.2.1/lib/slim/do_inserter.rb +34 -0
  22. data/slim-5.2.1/lib/slim/embedded.rb +248 -0
  23. data/slim-5.2.1/lib/slim/end_inserter.rb +63 -0
  24. data/slim-5.2.1/lib/slim/engine.rb +42 -0
  25. data/slim-5.2.1/lib/slim/erb_converter.rb +15 -0
  26. data/slim-5.2.1/lib/slim/filter.rb +31 -0
  27. data/slim-5.2.1/lib/slim/grammar.rb +24 -0
  28. data/slim-5.2.1/lib/slim/include.rb +58 -0
  29. data/slim-5.2.1/lib/slim/interpolation.rb +36 -0
  30. data/slim-5.2.1/lib/slim/logic_less/context.rb +126 -0
  31. data/slim-5.2.1/lib/slim/logic_less/filter.rb +81 -0
  32. data/slim-5.2.1/lib/slim/logic_less.rb +6 -0
  33. data/slim-5.2.1/lib/slim/parser.rb +535 -0
  34. data/slim-5.2.1/lib/slim/railtie.rb +19 -0
  35. data/slim-5.2.1/lib/slim/smart/escaper.rb +42 -0
  36. data/slim-5.2.1/lib/slim/smart/filter.rb +97 -0
  37. data/slim-5.2.1/lib/slim/smart/parser.rb +35 -0
  38. data/slim-5.2.1/lib/slim/smart.rb +9 -0
  39. data/slim-5.2.1/lib/slim/splat/builder.rb +115 -0
  40. data/slim-5.2.1/lib/slim/splat/filter.rb +93 -0
  41. data/slim-5.2.1/lib/slim/template.rb +6 -0
  42. data/slim-5.2.1/lib/slim/translator.rb +119 -0
  43. data/slim-5.2.1/lib/slim/version.rb +6 -0
  44. data/slim-5.2.1/lib/slim.rb +16 -0
  45. data/slim-5.2.1/slim.gemspec +33 -0
  46. data/slim-5.2.1/test/core/helper.rb +201 -0
  47. data/slim-5.2.1/test/core/test_code_blocks.rb +194 -0
  48. data/slim-5.2.1/test/core/test_code_escaping.rb +162 -0
  49. data/slim-5.2.1/test/core/test_code_evaluation.rb +181 -0
  50. data/slim-5.2.1/test/core/test_code_output.rb +168 -0
  51. data/slim-5.2.1/test/core/test_code_structure.rb +203 -0
  52. data/slim-5.2.1/test/core/test_commands.rb +219 -0
  53. data/slim-5.2.1/test/core/test_embedded_engines.rb +247 -0
  54. data/slim-5.2.1/test/core/test_encoding.rb +28 -0
  55. data/slim-5.2.1/test/core/test_erb_converter.rb +65 -0
  56. data/slim-5.2.1/test/core/test_html_attributes.rb +276 -0
  57. data/slim-5.2.1/test/core/test_html_escaping.rb +65 -0
  58. data/slim-5.2.1/test/core/test_html_structure.rb +599 -0
  59. data/slim-5.2.1/test/core/test_parser_errors.rb +148 -0
  60. data/slim-5.2.1/test/core/test_pretty.rb +163 -0
  61. data/slim-5.2.1/test/core/test_ruby_errors.rb +200 -0
  62. data/slim-5.2.1/test/core/test_slim_template.rb +78 -0
  63. data/slim-5.2.1/test/core/test_splat_prefix_option.rb +155 -0
  64. data/slim-5.2.1/test/core/test_tabs.rb +169 -0
  65. data/slim-5.2.1/test/core/test_text_interpolation.rb +79 -0
  66. data/slim-5.2.1/test/core/test_thread_options.rb +18 -0
  67. data/slim-5.2.1/test/core/test_unicode.rb +15 -0
  68. data/slim-5.2.1/test/include/files/recursive.slim +1 -0
  69. data/slim-5.2.1/test/include/files/slimfile.slim +3 -0
  70. data/slim-5.2.1/test/include/files/subdir/test.slim +1 -0
  71. data/slim-5.2.1/test/include/files/textfile +1 -0
  72. data/slim-5.2.1/test/include/test_include.rb +24 -0
  73. data/slim-5.2.1/test/literate/TESTS.md +1323 -0
  74. data/slim-5.2.1/test/literate/helper.rb +15 -0
  75. data/slim-5.2.1/test/literate/run.rb +92 -0
  76. data/slim-5.2.1/test/logic_less/test_logic_less.rb +330 -0
  77. data/slim-5.2.1/test/rails/Rakefile +7 -0
  78. data/slim-5.2.1/test/rails/app/assets/config/manifest.js +1 -0
  79. data/slim-5.2.1/test/rails/app/controllers/application_controller.rb +2 -0
  80. data/slim-5.2.1/test/rails/app/controllers/entries_controller.rb +5 -0
  81. data/slim-5.2.1/test/rails/app/controllers/slim_controller.rb +46 -0
  82. data/slim-5.2.1/test/rails/app/helpers/application_helper.rb +5 -0
  83. data/slim-5.2.1/test/rails/app/models/entry.rb +16 -0
  84. data/slim-5.2.1/test/rails/app/views/entries/edit.html.slim +3 -0
  85. data/slim-5.2.1/test/rails/app/views/layouts/application.html+testvariant.slim +10 -0
  86. data/slim-5.2.1/test/rails/app/views/layouts/application.html.slim +10 -0
  87. data/slim-5.2.1/test/rails/app/views/slim/_partial.html.slim +1 -0
  88. data/slim-5.2.1/test/rails/app/views/slim/attributes.html.slim +3 -0
  89. data/slim-5.2.1/test/rails/app/views/slim/content_for.html.slim +7 -0
  90. data/slim-5.2.1/test/rails/app/views/slim/erb.html.erb +1 -0
  91. data/slim-5.2.1/test/rails/app/views/slim/form_for.html.slim +2 -0
  92. data/slim-5.2.1/test/rails/app/views/slim/helper.html.slim +4 -0
  93. data/slim-5.2.1/test/rails/app/views/slim/integers.html.slim +1 -0
  94. data/slim-5.2.1/test/rails/app/views/slim/no_layout.html.slim +1 -0
  95. data/slim-5.2.1/test/rails/app/views/slim/normal.html.slim +1 -0
  96. data/slim-5.2.1/test/rails/app/views/slim/partial.html.slim +2 -0
  97. data/slim-5.2.1/test/rails/app/views/slim/splat.html.slim +2 -0
  98. data/slim-5.2.1/test/rails/app/views/slim/splat_with_delimiter.slim +1 -0
  99. data/slim-5.2.1/test/rails/app/views/slim/thread_options.html.slim +1 -0
  100. data/slim-5.2.1/test/rails/app/views/slim/variables.html.slim +1 -0
  101. data/slim-5.2.1/test/rails/app/views/slim/xml.slim +1 -0
  102. data/slim-5.2.1/test/rails/config/application.rb +44 -0
  103. data/slim-5.2.1/test/rails/config/boot.rb +10 -0
  104. data/slim-5.2.1/test/rails/config/environment.rb +5 -0
  105. data/slim-5.2.1/test/rails/config/environments/test.rb +34 -0
  106. data/slim-5.2.1/test/rails/config/initializers/backtrace_silencers.rb +7 -0
  107. data/slim-5.2.1/test/rails/config/initializers/inflections.rb +10 -0
  108. data/slim-5.2.1/test/rails/config/initializers/mime_types.rb +5 -0
  109. data/slim-5.2.1/test/rails/config/initializers/session_store.rb +8 -0
  110. data/slim-5.2.1/test/rails/config/locales/en.yml +5 -0
  111. data/slim-5.2.1/test/rails/config/routes.rb +60 -0
  112. data/slim-5.2.1/test/rails/config.ru +4 -0
  113. data/slim-5.2.1/test/rails/script/rails +6 -0
  114. data/slim-5.2.1/test/rails/test/helper.rb +34 -0
  115. data/slim-5.2.1/test/rails/test/test_slim.rb +102 -0
  116. data/slim-5.2.1/test/sinatra/contest.rb +91 -0
  117. data/slim-5.2.1/test/sinatra/helper.rb +143 -0
  118. data/slim-5.2.1/test/sinatra/test_core.rb +91 -0
  119. data/slim-5.2.1/test/sinatra/test_include.rb +16 -0
  120. data/slim-5.2.1/test/sinatra/views/embed_include_js.slim +8 -0
  121. data/slim-5.2.1/test/sinatra/views/embed_js.slim +11 -0
  122. data/slim-5.2.1/test/sinatra/views/footer.slim +1 -0
  123. data/slim-5.2.1/test/sinatra/views/hello.slim +1 -0
  124. data/slim-5.2.1/test/sinatra/views/layout2.slim +3 -0
  125. data/slim-5.2.1/test/smart/test_smart_text.rb +294 -0
  126. data/slim-5.2.1/test/translator/test_translator.rb +76 -0
  127. metadata +166 -0
@@ -0,0 +1,155 @@
1
+ require 'helper'
2
+
3
+ class TestSplatPrefixOption < TestSlim
4
+
5
+ def prefixes
6
+ ['*','**','*!','*%','*^','*$']
7
+ end
8
+
9
+ def options(prefix)
10
+ { splat_prefix: prefix }
11
+ end
12
+
13
+ def test_splat_without_content
14
+ prefixes.each do |prefix|
15
+ source = %Q{
16
+ #{prefix}hash
17
+ p#{prefix}hash
18
+ }
19
+
20
+ assert_html '<div a="The letter a" b="The letter b"></div><p a="The letter a" b="The letter b"></p>', source, options(prefix)
21
+ end
22
+ end
23
+
24
+ def test_shortcut_splat
25
+ prefixes.each do |prefix|
26
+ source = %Q{
27
+ #{prefix}hash This is my title
28
+ }
29
+
30
+ assert_html '<div a="The letter a" b="The letter b">This is my title</div>', source, options(prefix)
31
+ end
32
+ end
33
+
34
+ def test_splat
35
+ prefixes.each do |prefix|
36
+ source = %Q{
37
+ h1 #{prefix}hash class=[] This is my title
38
+ }
39
+
40
+ assert_html '<h1 a="The letter a" b="The letter b">This is my title</h1>', source, options(prefix)
41
+ end
42
+ end
43
+
44
+ def test_closed_splat
45
+ prefixes.each do |prefix|
46
+ source = %Q{
47
+ #{prefix}hash /
48
+ }
49
+
50
+ assert_html '<div a="The letter a" b="The letter b" />', source, options(prefix)
51
+ end
52
+ end
53
+
54
+ def test_splat_tag_name
55
+ prefixes.each do |prefix|
56
+ source = %Q{
57
+ #{prefix}{tag: 'h1', id: 'title'} This is my title
58
+ }
59
+
60
+ assert_html '<h1 id="title">This is my title</h1>', source, options(prefix)
61
+ end
62
+ end
63
+
64
+
65
+ def test_splat_empty_tag_name
66
+ prefixes.each do |prefix|
67
+ source = %Q{
68
+ #{prefix}{tag: '', id: 'test'} This is my title
69
+ }
70
+
71
+ assert_html '<div id="test">This is my title</div>', source, options(prefix)
72
+ end
73
+ end
74
+
75
+ def test_closed_splat_tag
76
+ prefixes.each do |prefix|
77
+ source = %Q{
78
+ #{prefix}hash /
79
+ }
80
+
81
+ assert_html '<div a="The letter a" b="The letter b" />', source, options(prefix)
82
+ end
83
+ end
84
+
85
+ def test_splat_with_id_shortcut
86
+ prefixes.each do |prefix|
87
+ source = %Q{
88
+ #myid#{prefix}hash This is my title
89
+ }
90
+
91
+ assert_html '<div a="The letter a" b="The letter b" id="myid">This is my title</div>', source, options(prefix)
92
+ end
93
+ end
94
+
95
+ def test_splat_with_class_shortcut
96
+ prefixes.each do |prefix|
97
+ source = %Q{
98
+ .myclass#{prefix}hash This is my title
99
+ }
100
+
101
+ assert_html '<div a="The letter a" b="The letter b" class="myclass">This is my title</div>', source, options(prefix)
102
+ end
103
+ end
104
+
105
+ def test_splat_with_id_and_class_shortcuts
106
+ prefixes.each do |prefix|
107
+ source = %Q{
108
+ #myid.myclass#{prefix}hash This is my title
109
+ }
110
+
111
+ assert_html '<div a="The letter a" b="The letter b" class="myclass" id="myid">This is my title</div>', source, options(prefix)
112
+ end
113
+ end
114
+
115
+ def test_splat_with_class_merging
116
+ prefixes.each do |prefix|
117
+ source = %Q{
118
+ #myid.myclass #{prefix}{class: [:secondclass, %w(x y z)]} #{prefix}hash This is my title
119
+ }
120
+
121
+ assert_html '<div a="The letter a" b="The letter b" class="myclass secondclass x y z" id="myid">This is my title</div>', source, options(prefix)
122
+ end
123
+ end
124
+
125
+ def test_splat_with_boolean_attribute
126
+ prefixes.each do |prefix|
127
+ source = %Q{
128
+ #{prefix}{disabled: true, empty1: false, nonempty: '', empty2: nil} This is my title
129
+ }
130
+
131
+ assert_html '<div disabled="" nonempty="">This is my title</div>', source, options(prefix)
132
+ end
133
+ end
134
+
135
+ def test_splat_merging_with_arrays
136
+ prefixes.each do |prefix|
137
+ source = %Q{
138
+ #{prefix}{a: 1, b: 2} #{prefix}[[:c, 3], [:d, 4]] #{prefix}[[:e, 5], [:f, 6]] This is my title
139
+ }
140
+
141
+ assert_html '<div a="1" b="2" c="3" d="4" e="5" f="6">This is my title</div>', source, options(prefix)
142
+ end
143
+ end
144
+
145
+ def test_splat_with_other_attributes
146
+ prefixes.each do |prefix|
147
+ source = %Q{
148
+ h1 data-id="123" #{prefix}hash This is my title
149
+ }
150
+
151
+ assert_html '<h1 a="The letter a" b="The letter b" data-id="123">This is my title</h1>', source, options(prefix)
152
+ end
153
+ end
154
+
155
+ end
@@ -0,0 +1,169 @@
1
+ require 'helper'
2
+
3
+ class TestSlimTabs < TestSlim
4
+
5
+ def teardown
6
+ Slim::Engine.set_options tabsize: 4
7
+ end
8
+
9
+ def test_single_tab1_expansion
10
+
11
+ Slim::Engine.set_options tabsize: 1
12
+
13
+ source = %Q{
14
+ |
15
+ \t0
16
+ \t1
17
+ \t2
18
+ \t3
19
+ \t4
20
+ \t5
21
+ \t6
22
+ \t7
23
+ \t8
24
+ }
25
+
26
+ result = %q{
27
+ 0
28
+ 1
29
+ 2
30
+ 3
31
+ 4
32
+ 5
33
+ 6
34
+ 7
35
+ 8
36
+ }.strip
37
+
38
+ assert_html result, source
39
+ end
40
+
41
+ def test_single_tab4_expansion
42
+
43
+ Slim::Engine.set_options tabsize: 4
44
+
45
+ source = %Q{
46
+ |
47
+ \t0
48
+ \t1
49
+ \t2
50
+ \t3
51
+ \t4
52
+ \t5
53
+ \t6
54
+ \t7
55
+ \t8
56
+ }
57
+
58
+ result = %q{
59
+ 0
60
+ 1
61
+ 2
62
+ 3
63
+ 4
64
+ 5
65
+ 6
66
+ 7
67
+ 8
68
+ }.strip
69
+
70
+ assert_html result, source
71
+ end
72
+
73
+ def test_multi_tab1_expansion
74
+
75
+ Slim::Engine.set_options tabsize: 1
76
+
77
+ source = %Q{
78
+ |
79
+ \t0
80
+ \t\t1
81
+ \t \t2
82
+ \t \t3
83
+ \t \t4
84
+ \t\t1
85
+ \t \t2
86
+ \t \t3
87
+ \t \t4
88
+ \t\t1
89
+ \t \t2
90
+ \t \t3
91
+ \t \t4
92
+ \t\t1
93
+ \t \t2
94
+ \t \t3
95
+ \t \t4
96
+ }
97
+
98
+ result = %q{
99
+ 0
100
+ 1
101
+ 2
102
+ 3
103
+ 4
104
+ 1
105
+ 2
106
+ 3
107
+ 4
108
+ 1
109
+ 2
110
+ 3
111
+ 4
112
+ 1
113
+ 2
114
+ 3
115
+ 4
116
+ }.strip
117
+
118
+ assert_html result, source
119
+ end
120
+
121
+ def test_multi_tab4_expansion
122
+
123
+ Slim::Engine.set_options tabsize: 4
124
+
125
+ source = %Q{
126
+ |
127
+ \t0
128
+ \t\t1
129
+ \t \t2
130
+ \t \t3
131
+ \t \t4
132
+ \t\t1
133
+ \t \t2
134
+ \t \t3
135
+ \t \t4
136
+ \t\t1
137
+ \t \t2
138
+ \t \t3
139
+ \t \t4
140
+ \t\t1
141
+ \t \t2
142
+ \t \t3
143
+ \t \t4
144
+ }
145
+
146
+ result = %q{
147
+ 0
148
+ 1
149
+ 2
150
+ 3
151
+ 4
152
+ 1
153
+ 2
154
+ 3
155
+ 4
156
+ 1
157
+ 2
158
+ 3
159
+ 4
160
+ 1
161
+ 2
162
+ 3
163
+ 4
164
+ }.strip
165
+
166
+ assert_html result, source
167
+ end
168
+
169
+ end
@@ -0,0 +1,79 @@
1
+ require 'helper'
2
+
3
+ class TestSlimTextInterpolation < TestSlim
4
+ def test_interpolation_in_attribute
5
+ source = %q{
6
+ p id="a#{id_helper}b" = hello_world
7
+ }
8
+
9
+ assert_html '<p id="anoticeb">Hello World from @env</p>', source
10
+ end
11
+
12
+ def test_nested_interpolation_in_attribute
13
+ source = %q{
14
+ p id="#{"abc#{1+1}" + "("}" = hello_world
15
+ }
16
+
17
+ assert_html '<p id="abc2(">Hello World from @env</p>', source
18
+ end
19
+
20
+ def test_interpolation_in_text
21
+ source = %q{
22
+ p
23
+ | #{hello_world} with "quotes"
24
+ p
25
+ |
26
+ A message from the compiler: #{hello_world}
27
+ }
28
+
29
+ assert_html '<p>Hello World from @env with "quotes"</p><p>A message from the compiler: Hello World from @env</p>', source
30
+ end
31
+
32
+ def test_interpolation_in_tag
33
+ source = %q{
34
+ p #{hello_world}
35
+ }
36
+
37
+ assert_html '<p>Hello World from @env</p>', source
38
+ end
39
+
40
+ def test_escape_interpolation
41
+ source = %q{
42
+ p \\#{hello_world}
43
+ p text1 \\#{hello_world} text2
44
+ }
45
+
46
+ assert_html '<p>#{hello_world}</p><p>text1 #{hello_world} text2</p>', source
47
+ end
48
+
49
+ def test_complex_interpolation
50
+ source = %q{
51
+ p Message: #{message('hello', "user #{output_number}")}
52
+ }
53
+
54
+ assert_html '<p>Message: hello user 1337</p>', source
55
+ end
56
+
57
+ def test_interpolation_with_escaping
58
+ source = %q{
59
+ | #{evil_method}
60
+ }
61
+
62
+ assert_html '&lt;script&gt;do_something_evil();&lt;/script&gt;', source
63
+ end
64
+
65
+ def test_interpolation_without_escaping
66
+ source = %q{
67
+ | #{{evil_method}}
68
+ }
69
+
70
+ assert_html '<script>do_something_evil();</script>', source
71
+ end
72
+
73
+ def test_interpolation_with_escaping_and_delimiter
74
+ source = %q{
75
+ | #{(evil_method)}
76
+ }
77
+ assert_html '&lt;script&gt;do_something_evil();&lt;/script&gt;', source
78
+ end
79
+ end
@@ -0,0 +1,18 @@
1
+ require 'helper'
2
+
3
+ class TestSlimThreadOptions < TestSlim
4
+ def test_thread_options
5
+ source = %q{p.test}
6
+
7
+ assert_html '<p class="test"></p>', source
8
+ assert_html "<p class='test'></p>", source, attr_quote: "'"
9
+
10
+ Slim::Engine.with_options(attr_quote: "'") do
11
+ assert_html "<p class='test'></p>", source
12
+ assert_html '<p class="test"></p>', source, attr_quote: '"'
13
+ end
14
+
15
+ assert_html '<p class="test"></p>', source
16
+ assert_html "<p class='test'></p>", source, attr_quote: "'"
17
+ end
18
+ end
@@ -0,0 +1,15 @@
1
+ require 'helper'
2
+
3
+ class TestSlimUnicode < TestSlim
4
+ def test_unicode_tags
5
+ source = "Статья года"
6
+ result = "<Статья>года</Статья>"
7
+ assert_html result, source
8
+ end
9
+
10
+ def test_unicode_attrs
11
+ source = "Статья года=123 content"
12
+ result = "<Статья года=\"123\">content</Статья>"
13
+ assert_html result, source
14
+ end
15
+ end
@@ -0,0 +1 @@
1
+ | rec
@@ -0,0 +1,3 @@
1
+ | slim1
2
+ include recursive
3
+ | slim2
@@ -0,0 +1 @@
1
+ | subdir
@@ -0,0 +1 @@
1
+ 1+2=#{1+2}
@@ -0,0 +1,24 @@
1
+ require 'helper'
2
+ require 'slim/include'
3
+
4
+ class TestSlimInclude < TestSlim
5
+ def test_include
6
+ source = %q{
7
+ br/
8
+ a: include slimfile
9
+ b: include textfile
10
+ c: include slimfile.slim
11
+ d: include subdir/test
12
+ }
13
+ assert_html '<br /><a>slim1recslim2</a><b>1+2=3</b><c>slim1recslim2</c><d>subdir</d>', source, include_dirs: [File.expand_path('files', File.dirname(__FILE__))]
14
+ end
15
+
16
+ def test_include_with_newline
17
+ source = %q{
18
+ a: include slimfile
19
+
20
+ .content
21
+ }
22
+ assert_html '<a>slim1recslim2</a><div class="content"></div>', source, include_dirs: [File.expand_path('files', File.dirname(__FILE__))]
23
+ end
24
+ end