dang 2.0.0 → 2.1.0

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +3 -3
  3. data/History.md +10 -0
  4. data/Manifest.txt +24 -25
  5. data/README.md +3 -3
  6. data/Rakefile +3 -3
  7. data/dang.gemspec +8 -8
  8. data/lib/dang/dang.rb +6 -6
  9. data/lib/dang/parser.kpeg +57 -23
  10. data/lib/dang/parser.rb +202 -71
  11. data/{spectory → specs}/attribute_spec.rb +1 -1
  12. data/{spectory → specs}/comment_spec.rb +1 -1
  13. data/{spectory → specs}/conditional_comment_spec.rb +1 -1
  14. data/{spectory → specs}/data_attribute_spec.rb +1 -1
  15. data/{spectory → specs}/doctype_spec.rb +1 -1
  16. data/{spectory → specs}/embedded_ruby_spec.rb +1 -1
  17. data/{spectory/v2 → specs/experiments}/array_classes_spec.rb +1 -1
  18. data/{spectory/v2 → specs/experiments}/filters/markdown_spec.rb +1 -1
  19. data/{spectory/v2 → specs/experiments}/hash_attribute_spec.rb +2 -2
  20. data/{spectory/v2 → specs/experiments}/script_exception_spec.rb +1 -1
  21. data/{spectory/v2 → specs/experiments}/style_exception_spec.rb +1 -1
  22. data/{spectory → specs}/file_spec.rb +1 -1
  23. data/{spectory → specs}/files/iamshane-com.html +0 -0
  24. data/{spectory → specs}/files/iamshane-com.html.dang +0 -0
  25. data/{spectory → specs}/filter_spec.rb +1 -1
  26. data/{spectory → specs}/helper.rb +0 -0
  27. data/specs/interpolation_spec.rb +12 -0
  28. data/{spectory → specs}/sanity_spec.rb +1 -1
  29. data/{spectory → specs}/script_spec.rb +1 -1
  30. data/{spectory → specs}/selector_spec.rb +1 -1
  31. data/{spectory → specs}/style_spec.rb +1 -1
  32. data/{spectory → specs}/tag_spec.rb +1 -1
  33. data/{spectory → specs}/well_formedness_spec.rb +1 -1
  34. data/{spectory → specs}/whitespace_spec.rb +1 -1
  35. metadata +28 -30
  36. data/TODO.md +0 -0
  37. data/spectory/v2/interpolation_spec.rb +0 -11
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c8392c3b94db03612f7a2ea518733d37540b7439
4
- data.tar.gz: 2244fda90a145eb7fb343df496c1ea6f9ad9d28f
3
+ metadata.gz: d7de06baa99ae1e305941525514814cfed5206f2
4
+ data.tar.gz: 30763edb48c45e9242a76a27ad9f090d89025a50
5
5
  SHA512:
6
- metadata.gz: 612aa96b31e4e957fbda3f44ff4cb48a5ed3408b1ddb83c0af78b3d87b2684dec3dd63eb6b43e2bc47989f63980960cbff238b23b359d78397cb02bccad063b6
7
- data.tar.gz: a03efa39aa4fe532c8390d84d19722dc49cf16e0763e36bdeef1bbee4e6b0d4dcc9386bd88d3a0dd06f1d3dbfbe5d97b51ba2f81523eec087ccc6ddfdd2b5ab0
6
+ metadata.gz: a8ca0079ed5a497a796bdf81f88f134f3f09d2b6f96670aef9cf20a83630418dd1a4a87199700a5a74a72afa3da9f1d97adaf0fbbafd35d3966e40645dac62c7
7
+ data.tar.gz: 8470423a9c391400fd10cfcf8c1671fe7f232e5d58286a36cc1e6b90f1592385d1a3a39576b86856dfea917f4914ff18be48d84066056013a332228cd9a4f406
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- dang (1.0.0)
4
+ dang (2.0.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -14,7 +14,7 @@ GEM
14
14
  kpeg (1.0.0)
15
15
  minitest (5.4.3)
16
16
  rake (10.3.2)
17
- rdoc (3.12.2)
17
+ rdoc (4.1.2)
18
18
  json (~> 1.4)
19
19
 
20
20
  PLATFORMS
@@ -28,4 +28,4 @@ DEPENDENCIES
28
28
  kpeg
29
29
  minitest
30
30
  rake
31
- rdoc (~> 3.10)
31
+ rdoc (~> 4.0)
data/History.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # History
2
2
 
3
+ ## 2.1.0 / 2015-02-11
4
+
5
+ ### Minor Feature
6
+
7
+ 1. Added interpolation in tag attributes
8
+
9
+ ```dang
10
+ <time[datetime=<| Time.now.strftime(%Y-%m-%d) |>] <| Time.now |> time>
11
+ ```
12
+
3
13
  ## 2.0.0 / 2014-11-20
4
14
 
5
15
  ### Major Features
@@ -5,7 +5,6 @@ History.md
5
5
  Manifest.txt
6
6
  README.md
7
7
  Rakefile
8
- TODO.md
9
8
  bin/dang
10
9
  dang.gemspec
11
10
  lib/dang.rb
@@ -13,27 +12,27 @@ lib/dang/dang.rb
13
12
  lib/dang/parser.kpeg
14
13
  lib/dang/parser.rb
15
14
  lib/dang/rails.rb
16
- spectory/attribute_spec.rb
17
- spectory/comment_spec.rb
18
- spectory/conditional_comment_spec.rb
19
- spectory/data_attribute_spec.rb
20
- spectory/doctype_spec.rb
21
- spectory/embedded_ruby_spec.rb
22
- spectory/file_spec.rb
23
- spectory/files/iamshane-com.html
24
- spectory/files/iamshane-com.html.dang
25
- spectory/filter_spec.rb
26
- spectory/helper.rb
27
- spectory/sanity_spec.rb
28
- spectory/script_spec.rb
29
- spectory/selector_spec.rb
30
- spectory/style_spec.rb
31
- spectory/tag_spec.rb
32
- spectory/v2/array_classes_spec.rb
33
- spectory/v2/filters/markdown_spec.rb
34
- spectory/v2/hash_attribute_spec.rb
35
- spectory/v2/interpolation_spec.rb
36
- spectory/v2/script_exception_spec.rb
37
- spectory/v2/style_exception_spec.rb
38
- spectory/well_formedness_spec.rb
39
- spectory/whitespace_spec.rb
15
+ specs/attribute_spec.rb
16
+ specs/comment_spec.rb
17
+ specs/conditional_comment_spec.rb
18
+ specs/data_attribute_spec.rb
19
+ specs/doctype_spec.rb
20
+ specs/embedded_ruby_spec.rb
21
+ specs/file_spec.rb
22
+ specs/filter_spec.rb
23
+ specs/helper.rb
24
+ specs/interpolation_spec.rb
25
+ specs/sanity_spec.rb
26
+ specs/script_spec.rb
27
+ specs/selector_spec.rb
28
+ specs/style_spec.rb
29
+ specs/tag_spec.rb
30
+ specs/well_formedness_spec.rb
31
+ specs/whitespace_spec.rb
32
+ specs/experiments/array_classes_spec.rb
33
+ specs/experiments/filters/markdown_spec.rb
34
+ specs/experiments/hash_attribute_spec.rb
35
+ specs/experiments/script_exception_spec.rb
36
+ specs/experiments/style_exception_spec.rb
37
+ specs/files/iamshane-com.html
38
+ specs/files/iamshane-com.html.dang
data/README.md CHANGED
@@ -51,7 +51,7 @@ Or just a snippet of dang into html:
51
51
 
52
52
  ## Current Version
53
53
 
54
- 2.0.0
54
+ 2.1.0
55
55
 
56
56
 
57
57
  ## Requirements
@@ -98,8 +98,8 @@ This will install any missing dependencies.
98
98
 
99
99
  ## Authors
100
100
 
101
- * Shane Becker / [@veganstraightedge](https://github.com/veganstraightedge)
102
- * Evan Phoenix / [@evanphx](https://github.com/evanphx)
101
+ * Shane Becker / [@veganstraightedge](https://github.com/veganstraightedge)
102
+ * Evan Phoenix / [@evanphx](https://github.com/evanphx)
103
103
 
104
104
 
105
105
  ## Contributing
data/Rakefile CHANGED
@@ -25,16 +25,16 @@ $:.unshift "./lib"
25
25
  task :default => :spec
26
26
 
27
27
  task :spec do
28
- Dir[File.dirname(__FILE__) + "/spectory/**/*_spec.rb"].each do |path|
28
+ Dir[File.dirname(__FILE__) + "/specs/**/*_spec.rb"].each do |path|
29
29
  require path
30
30
  end
31
31
 
32
32
  Minitest.autorun
33
33
  end
34
34
 
35
- file "#{HOE.spec.name}.gemspec" => ['Rakefile', "lib/dang/dang.rb"] do |t|
35
+ file "#{HOE.spec.name}.gemspec" => ["Rakefile", "lib/dang/dang.rb"] do |t|
36
36
  puts "Generating #{t.name}"
37
- File.open(t.name, 'wb') { |f| f.write HOE.spec.to_ruby }
37
+ File.open(t.name, "wb") { |f| f.write HOE.spec.to_ruby }
38
38
  end
39
39
 
40
40
  desc "Generate or update the standalone gemspec file for the project"
@@ -1,19 +1,19 @@
1
1
  # -*- encoding: utf-8 -*-
2
- # stub: dang 2.0.0 ruby lib
2
+ # stub: dang 2.1.0 ruby lib
3
3
 
4
4
  Gem::Specification.new do |s|
5
5
  s.name = "dang"
6
- s.version = "2.0.0"
6
+ s.version = "2.1.0"
7
7
 
8
8
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
9
9
  s.require_paths = ["lib"]
10
10
  s.authors = ["Shane Becker"]
11
- s.date = "2014-11-20"
11
+ s.date = "2015-02-12"
12
12
  s.description = "Dang is a Ruby templating language.\nIt uses angle brackets and CSS syntax.\nSomewhere between ERB and Haml."
13
13
  s.email = ["veganstraightedge@gmail.com"]
14
14
  s.executables = ["dang"]
15
- s.extra_rdoc_files = ["History.md", "Manifest.txt", "README.md", "TODO.md"]
16
- s.files = [".autotest", ".gitignore", ".hoeignore", ".travis.yml", "Gemfile", "Gemfile.lock", "History.md", "Manifest.txt", "README.md", "Rakefile", "TODO.md", "bin/dang", "dang.gemspec", "lib/dang.rb", "lib/dang/dang.rb", "lib/dang/parser.kpeg", "lib/dang/parser.rb", "lib/dang/rails.rb"]
15
+ s.extra_rdoc_files = ["History.md", "Manifest.txt", "README.md"]
16
+ s.files = [".hoeignore", "Gemfile", "Gemfile.lock", "History.md", "Manifest.txt", "README.md", "Rakefile", "bin/dang", "dang.gemspec", "lib/dang.rb", "lib/dang/dang.rb", "lib/dang/parser.kpeg", "lib/dang/parser.rb", "lib/dang/rails.rb", "specs/attribute_spec.rb", "specs/comment_spec.rb", "specs/conditional_comment_spec.rb", "specs/data_attribute_spec.rb", "specs/doctype_spec.rb", "specs/embedded_ruby_spec.rb", "specs/experiments/array_classes_spec.rb", "specs/experiments/filters/markdown_spec.rb", "specs/experiments/hash_attribute_spec.rb", "specs/experiments/script_exception_spec.rb", "specs/experiments/style_exception_spec.rb", "specs/file_spec.rb", "specs/files/iamshane-com.html", "specs/files/iamshane-com.html.dang", "specs/filter_spec.rb", "specs/helper.rb", "specs/interpolation_spec.rb", "specs/sanity_spec.rb", "specs/script_spec.rb", "specs/selector_spec.rb", "specs/style_spec.rb", "specs/tag_spec.rb", "specs/well_formedness_spec.rb", "specs/whitespace_spec.rb"]
17
17
  s.homepage = "https://github.com/veganstraightedge/dang"
18
18
  s.licenses = ["PUBLIC DOMAIN", "CC0"]
19
19
  s.rdoc_options = ["--main", "README.md"]
@@ -25,13 +25,13 @@ Gem::Specification.new do |s|
25
25
 
26
26
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
27
27
  s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
28
- s.add_development_dependency(%q<hoe>, ["~> 3.13"])
28
+ s.add_development_dependency(%q<hoe>, ["~> 3.12"])
29
29
  else
30
30
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
31
- s.add_dependency(%q<hoe>, ["~> 3.13"])
31
+ s.add_dependency(%q<hoe>, ["~> 3.12"])
32
32
  end
33
33
  else
34
34
  s.add_dependency(%q<rdoc>, ["~> 4.0"])
35
- s.add_dependency(%q<hoe>, ["~> 3.13"])
35
+ s.add_dependency(%q<hoe>, ["~> 3.12"])
36
36
  end
37
37
  end
@@ -1,10 +1,10 @@
1
- require 'stringio'
2
- require 'rubygems'
3
- require 'dang/parser'
1
+ require "stringio"
2
+ require "rubygems"
3
+ require "dang/parser"
4
4
 
5
5
  class Dang
6
- VERSION = '2.0.0'
7
- CODENAME = 'Abigail'
6
+ VERSION = "2.1.0"
7
+ CODENAME = "Kira"
8
8
 
9
9
  @filters = {}
10
10
 
@@ -28,7 +28,7 @@ class Dang
28
28
  if filter = @filters[name]
29
29
  return filter[text]
30
30
  else
31
- raise "Unknown filter: \"#{name}\""
31
+ raise "Unknown filter: '#{name}'"
32
32
  end
33
33
  end
34
34
  end
@@ -80,21 +80,47 @@
80
80
  out = []
81
81
  classes = []
82
82
 
83
- (at+sel).each do |key,val|
83
+ (at+sel).flatten.each do |pair|
84
+ key = pair.key
85
+ val = pair.value
86
+
84
87
  if key == "class"
88
+ val = val.str if val.kind_of? Literal
85
89
  classes.unshift val
86
90
  elsif val == true
87
91
  out << "#{key}"
92
+ out << " "
88
93
  else
89
- out << "#{key}='#{val}'"
94
+ out << "#{key}='"
95
+ out << val
96
+ out << "'"
97
+ out << " "
90
98
  end
91
99
  end
92
100
 
93
101
  unless classes.empty?
94
- out.unshift "class='#{classes.join(' ')}'"
102
+ expanded = ["class='"]
103
+ classes.each do |c|
104
+ expanded << c
105
+ expanded << " "
106
+ end
107
+
108
+ expanded[-1] = "'"
109
+
110
+ classes = expanded
111
+
112
+ if out.empty?
113
+ return classes
114
+ end
115
+
116
+ out = classes + [" "] + out
117
+ end
118
+
119
+ if out.last == " "
120
+ out.pop
95
121
  end
96
122
 
97
- out.join(' ')
123
+ out
98
124
  end
99
125
 
100
126
  class Literal
@@ -124,7 +150,7 @@
124
150
  end
125
151
 
126
152
  def joinm(*elems)
127
- elems.map do |i|
153
+ elems.flatten.map do |i|
128
154
  if i.kind_of? String
129
155
  Literal.new(i)
130
156
  else
@@ -133,6 +159,8 @@
133
159
  end
134
160
  end
135
161
 
162
+ Pair = Struct.new(:key, :value)
163
+
136
164
  def join(f,b)
137
165
  f = Literal.new(f) if f.kind_of? String
138
166
  b = Literal.new(b) if b.kind_of? String
@@ -182,16 +210,22 @@ pclose = "|>"
182
210
  key = name
183
211
  | "'" < /[^'\n]*/ > "'" { text }
184
212
 
213
+ valsrt = "]" | "<|"
214
+ valchk = < (!valsrt .)* > { text }
215
+ valprt = puby | valchk
216
+ valraw = valprt:p valraw:b { join(p,b) }
217
+ | valprt
218
+
185
219
  val = "'" < /[^'\n]*/ > "'" { text }
186
- | < (!"]" .)* > { text }
220
+ | valraw
187
221
 
188
- dattr = "[" key:k "=" val:v "]" { "data-#{k}='#{v}'" }
189
- dattrs = dattr:a dattrs:l { "#{a} #{l}" }
190
- | dattr
222
+ dattr = "[" key:k "=" val:v "]" { Pair.new("data-#{k}", v) }
223
+ dattrs = dattr:a dattrs:l { [a] + l }
224
+ | dattr:a { [a] }
191
225
 
192
- attr = "[data" dattrs:t "]" { [t,true] }
193
- | "[" key:k "=" val:v "]" { [k, v] }
194
- | "[" key:k "]" { [k,true] }
226
+ attr = "[data" dattrs:t "]" { t }
227
+ | "[" key:k "=" val:v "]" { Pair.new(k, v) }
228
+ | "[" key:k "]" { Pair.new(k,true) }
195
229
  attrs = attr:a attrs:l { [a] + l }
196
230
  | attr:a { [a] }
197
231
 
@@ -205,8 +239,8 @@ comment = "<!" space+ < "[" space* cc_if (!"]" .)* "]" > space+ "!>"
205
239
  { "<!--#{text}-->" }
206
240
 
207
241
  simple = /[a-zA-Z0-9_\-]+/
208
- select = "#" < simple > { ["id", text] }
209
- | "." < simple > { ["class", text] }
242
+ select = "#" < simple > { Pair.new("id", text) }
243
+ | "." < simple > { Pair.new("class", text) }
210
244
 
211
245
  selects = select:s selects:t { [s] + t }
212
246
  | select:s { [s] }
@@ -219,23 +253,23 @@ filter = "<:" name:n bs* < (!end_filter(n) .)* > end_filter(n)
219
253
  tag = start:l slash { "<#{l} />" }
220
254
  | start:l space+ end:r { "<#{l}></#{r}>" }
221
255
  | start:l attrs:a slash
222
- { "<#{l} #{attrs(a)} />" }
256
+ { joinm "<#{l} ", attrs(a), " />" }
223
257
  | start:l selects:t slash
224
- { "<#{l} #{attrs(t)} />" }
258
+ { joinm "<#{l} ", attrs(t), " />" }
225
259
  | start:l selects:t attrs:a slash
226
- { "<#{l} #{attrs(t,a)} />" }
260
+ { joinm "<#{l} ", attrs(t,a), " />" }
227
261
  | start:l attrs:a space+ end:r
228
- { "<#{l} #{attrs(a)}></#{r}>" }
262
+ { joinm "<#{l} ", attrs(a), "></#{r}>" }
229
263
  | start:l selects:t space+ end:r
230
- { "<#{l} #{attrs(t)}></#{r}>" }
264
+ { joinm "<#{l} ", attrs(t), "></#{r}>" }
231
265
  | start:l selects:t attrs:a space+ end:r
232
- { "<#{l} #{attrs(t,a)}></#{r}>" }
266
+ { joinm "<#{l} ", attrs(t,a), "></#{r}>" }
233
267
  | start:l selects:t attrs:a pts body:b pts:es end:r
234
- { joinm "<#{l} #{attrs(a,t)}>",b,es,"</#{r}>" }
268
+ { joinm "<#{l} ", attrs(a,t), ">",b,es,"</#{r}>" }
235
269
  | start:l attrs:a pts body:b pts:es end:r
236
- { joinm "<#{l} #{attrs(a)}>", b, es, "</#{r}>" }
270
+ { joinm "<#{l} ", attrs(a), ">", b, es, "</#{r}>" }
237
271
  | start:l selects:t pts:s body:b pts:es end:r
238
- { joinm "<#{l} #{attrs(t)}>",s, b, es, "</#{r}>" }
272
+ { joinm "<#{l} ", attrs(t), ">",s, b, es, "</#{r}>" }
239
273
  | start:l pts:s body:b pts:es end:r
240
274
  { joinm "<#{l}>", s, b, es, "</#{r}>" }
241
275
 
@@ -435,21 +435,47 @@ class Dang::Parser
435
435
  out = []
436
436
  classes = []
437
437
 
438
- (at+sel).each do |key,val|
438
+ (at+sel).flatten.each do |pair|
439
+ key = pair.key
440
+ val = pair.value
441
+
439
442
  if key == "class"
443
+ val = val.str if val.kind_of? Literal
440
444
  classes.unshift val
441
445
  elsif val == true
442
446
  out << "#{key}"
447
+ out << " "
443
448
  else
444
- out << "#{key}='#{val}'"
449
+ out << "#{key}='"
450
+ out << val
451
+ out << "'"
452
+ out << " "
445
453
  end
446
454
  end
447
455
 
448
456
  unless classes.empty?
449
- out.unshift "class='#{classes.join(' ')}'"
457
+ expanded = ["class='"]
458
+ classes.each do |c|
459
+ expanded << c
460
+ expanded << " "
461
+ end
462
+
463
+ expanded[-1] = "'"
464
+
465
+ classes = expanded
466
+
467
+ if out.empty?
468
+ return classes
469
+ end
470
+
471
+ out = classes + [" "] + out
450
472
  end
451
473
 
452
- out.join(' ')
474
+ if out.last == " "
475
+ out.pop
476
+ end
477
+
478
+ out
453
479
  end
454
480
 
455
481
  class Literal
@@ -479,7 +505,7 @@ class Dang::Parser
479
505
  end
480
506
 
481
507
  def joinm(*elems)
482
- elems.map do |i|
508
+ elems.flatten.map do |i|
483
509
  if i.kind_of? String
484
510
  Literal.new(i)
485
511
  else
@@ -488,6 +514,8 @@ class Dang::Parser
488
514
  end
489
515
  end
490
516
 
517
+ Pair = Struct.new(:key, :value)
518
+
491
519
  def join(f,b)
492
520
  f = Literal.new(f) if f.kind_of? String
493
521
  b = Literal.new(b) if b.kind_of? String
@@ -1211,34 +1239,110 @@ class Dang::Parser
1211
1239
  return _tmp
1212
1240
  end
1213
1241
 
1214
- # val = ("'" < /[^'\n]*/ > "'" { text } | < (!"]" .)* > { text })
1215
- def _val
1242
+ # valsrt = ("]" | "<|")
1243
+ def _valsrt
1244
+
1245
+ _save = self.pos
1246
+ while true # choice
1247
+ _tmp = match_string("]")
1248
+ break if _tmp
1249
+ self.pos = _save
1250
+ _tmp = match_string("<|")
1251
+ break if _tmp
1252
+ self.pos = _save
1253
+ break
1254
+ end # end choice
1255
+
1256
+ set_failed_rule :_valsrt unless _tmp
1257
+ return _tmp
1258
+ end
1259
+
1260
+ # valchk = < (!valsrt .)* > { text }
1261
+ def _valchk
1262
+
1263
+ _save = self.pos
1264
+ while true # sequence
1265
+ _text_start = self.pos
1266
+ while true
1267
+
1268
+ _save2 = self.pos
1269
+ while true # sequence
1270
+ _save3 = self.pos
1271
+ _tmp = apply(:_valsrt)
1272
+ _tmp = _tmp ? nil : true
1273
+ self.pos = _save3
1274
+ unless _tmp
1275
+ self.pos = _save2
1276
+ break
1277
+ end
1278
+ _tmp = get_byte
1279
+ unless _tmp
1280
+ self.pos = _save2
1281
+ end
1282
+ break
1283
+ end # end sequence
1284
+
1285
+ break unless _tmp
1286
+ end
1287
+ _tmp = true
1288
+ if _tmp
1289
+ text = get_text(_text_start)
1290
+ end
1291
+ unless _tmp
1292
+ self.pos = _save
1293
+ break
1294
+ end
1295
+ @result = begin; text ; end
1296
+ _tmp = true
1297
+ unless _tmp
1298
+ self.pos = _save
1299
+ end
1300
+ break
1301
+ end # end sequence
1302
+
1303
+ set_failed_rule :_valchk unless _tmp
1304
+ return _tmp
1305
+ end
1306
+
1307
+ # valprt = (puby | valchk)
1308
+ def _valprt
1309
+
1310
+ _save = self.pos
1311
+ while true # choice
1312
+ _tmp = apply(:_puby)
1313
+ break if _tmp
1314
+ self.pos = _save
1315
+ _tmp = apply(:_valchk)
1316
+ break if _tmp
1317
+ self.pos = _save
1318
+ break
1319
+ end # end choice
1320
+
1321
+ set_failed_rule :_valprt unless _tmp
1322
+ return _tmp
1323
+ end
1324
+
1325
+ # valraw = (valprt:p valraw:b { join(p,b) } | valprt)
1326
+ def _valraw
1216
1327
 
1217
1328
  _save = self.pos
1218
1329
  while true # choice
1219
1330
 
1220
1331
  _save1 = self.pos
1221
1332
  while true # sequence
1222
- _tmp = match_string("'")
1223
- unless _tmp
1224
- self.pos = _save1
1225
- break
1226
- end
1227
- _text_start = self.pos
1228
- _tmp = scan(/\A(?-mix:[^'\n]*)/)
1229
- if _tmp
1230
- text = get_text(_text_start)
1231
- end
1333
+ _tmp = apply(:_valprt)
1334
+ p = @result
1232
1335
  unless _tmp
1233
1336
  self.pos = _save1
1234
1337
  break
1235
1338
  end
1236
- _tmp = match_string("'")
1339
+ _tmp = apply(:_valraw)
1340
+ b = @result
1237
1341
  unless _tmp
1238
1342
  self.pos = _save1
1239
1343
  break
1240
1344
  end
1241
- @result = begin; text ; end
1345
+ @result = begin; join(p,b) ; end
1242
1346
  _tmp = true
1243
1347
  unless _tmp
1244
1348
  self.pos = _save1
@@ -1248,47 +1352,54 @@ class Dang::Parser
1248
1352
 
1249
1353
  break if _tmp
1250
1354
  self.pos = _save
1355
+ _tmp = apply(:_valprt)
1356
+ break if _tmp
1357
+ self.pos = _save
1358
+ break
1359
+ end # end choice
1251
1360
 
1252
- _save2 = self.pos
1253
- while true # sequence
1254
- _text_start = self.pos
1255
- while true
1361
+ set_failed_rule :_valraw unless _tmp
1362
+ return _tmp
1363
+ end
1256
1364
 
1257
- _save4 = self.pos
1258
- while true # sequence
1259
- _save5 = self.pos
1260
- _tmp = match_string("]")
1261
- _tmp = _tmp ? nil : true
1262
- self.pos = _save5
1263
- unless _tmp
1264
- self.pos = _save4
1265
- break
1266
- end
1267
- _tmp = get_byte
1268
- unless _tmp
1269
- self.pos = _save4
1270
- end
1271
- break
1272
- end # end sequence
1365
+ # val = ("'" < /[^'\n]*/ > "'" { text } | valraw)
1366
+ def _val
1273
1367
 
1274
- break unless _tmp
1368
+ _save = self.pos
1369
+ while true # choice
1370
+
1371
+ _save1 = self.pos
1372
+ while true # sequence
1373
+ _tmp = match_string("'")
1374
+ unless _tmp
1375
+ self.pos = _save1
1376
+ break
1275
1377
  end
1276
- _tmp = true
1378
+ _text_start = self.pos
1379
+ _tmp = scan(/\A(?-mix:[^'\n]*)/)
1277
1380
  if _tmp
1278
1381
  text = get_text(_text_start)
1279
1382
  end
1280
1383
  unless _tmp
1281
- self.pos = _save2
1384
+ self.pos = _save1
1385
+ break
1386
+ end
1387
+ _tmp = match_string("'")
1388
+ unless _tmp
1389
+ self.pos = _save1
1282
1390
  break
1283
1391
  end
1284
1392
  @result = begin; text ; end
1285
1393
  _tmp = true
1286
1394
  unless _tmp
1287
- self.pos = _save2
1395
+ self.pos = _save1
1288
1396
  end
1289
1397
  break
1290
1398
  end # end sequence
1291
1399
 
1400
+ break if _tmp
1401
+ self.pos = _save
1402
+ _tmp = apply(:_valraw)
1292
1403
  break if _tmp
1293
1404
  self.pos = _save
1294
1405
  break
@@ -1298,7 +1409,7 @@ class Dang::Parser
1298
1409
  return _tmp
1299
1410
  end
1300
1411
 
1301
- # dattr = "[" key:k "=" val:v "]" { "data-#{k}='#{v}'" }
1412
+ # dattr = "[" key:k "=" val:v "]" { Pair.new("data-#{k}", v) }
1302
1413
  def _dattr
1303
1414
 
1304
1415
  _save = self.pos
@@ -1330,7 +1441,7 @@ class Dang::Parser
1330
1441
  self.pos = _save
1331
1442
  break
1332
1443
  end
1333
- @result = begin; "data-#{k}='#{v}'" ; end
1444
+ @result = begin; Pair.new("data-#{k}", v) ; end
1334
1445
  _tmp = true
1335
1446
  unless _tmp
1336
1447
  self.pos = _save
@@ -1342,7 +1453,7 @@ class Dang::Parser
1342
1453
  return _tmp
1343
1454
  end
1344
1455
 
1345
- # dattrs = (dattr:a dattrs:l { "#{a} #{l}" } | dattr)
1456
+ # dattrs = (dattr:a dattrs:l { [a] + l } | dattr:a { [a] })
1346
1457
  def _dattrs
1347
1458
 
1348
1459
  _save = self.pos
@@ -1362,7 +1473,7 @@ class Dang::Parser
1362
1473
  self.pos = _save1
1363
1474
  break
1364
1475
  end
1365
- @result = begin; "#{a} #{l}" ; end
1476
+ @result = begin; [a] + l ; end
1366
1477
  _tmp = true
1367
1478
  unless _tmp
1368
1479
  self.pos = _save1
@@ -1372,7 +1483,23 @@ class Dang::Parser
1372
1483
 
1373
1484
  break if _tmp
1374
1485
  self.pos = _save
1375
- _tmp = apply(:_dattr)
1486
+
1487
+ _save2 = self.pos
1488
+ while true # sequence
1489
+ _tmp = apply(:_dattr)
1490
+ a = @result
1491
+ unless _tmp
1492
+ self.pos = _save2
1493
+ break
1494
+ end
1495
+ @result = begin; [a] ; end
1496
+ _tmp = true
1497
+ unless _tmp
1498
+ self.pos = _save2
1499
+ end
1500
+ break
1501
+ end # end sequence
1502
+
1376
1503
  break if _tmp
1377
1504
  self.pos = _save
1378
1505
  break
@@ -1382,7 +1509,7 @@ class Dang::Parser
1382
1509
  return _tmp
1383
1510
  end
1384
1511
 
1385
- # attr = ("[data" dattrs:t "]" { [t,true] } | "[" key:k "=" val:v "]" { [k, v] } | "[" key:k "]" { [k,true] })
1512
+ # attr = ("[data" dattrs:t "]" { t } | "[" key:k "=" val:v "]" { Pair.new(k, v) } | "[" key:k "]" { Pair.new(k,true) })
1386
1513
  def _attr
1387
1514
 
1388
1515
  _save = self.pos
@@ -1406,7 +1533,7 @@ class Dang::Parser
1406
1533
  self.pos = _save1
1407
1534
  break
1408
1535
  end
1409
- @result = begin; [t,true] ; end
1536
+ @result = begin; t ; end
1410
1537
  _tmp = true
1411
1538
  unless _tmp
1412
1539
  self.pos = _save1
@@ -1446,7 +1573,7 @@ class Dang::Parser
1446
1573
  self.pos = _save2
1447
1574
  break
1448
1575
  end
1449
- @result = begin; [k, v] ; end
1576
+ @result = begin; Pair.new(k, v) ; end
1450
1577
  _tmp = true
1451
1578
  unless _tmp
1452
1579
  self.pos = _save2
@@ -1475,7 +1602,7 @@ class Dang::Parser
1475
1602
  self.pos = _save3
1476
1603
  break
1477
1604
  end
1478
- @result = begin; [k,true] ; end
1605
+ @result = begin; Pair.new(k,true) ; end
1479
1606
  _tmp = true
1480
1607
  unless _tmp
1481
1608
  self.pos = _save3
@@ -1866,7 +1993,7 @@ class Dang::Parser
1866
1993
  return _tmp
1867
1994
  end
1868
1995
 
1869
- # select = ("#" < simple > { ["id", text] } | "." < simple > { ["class", text] })
1996
+ # select = ("#" < simple > { Pair.new("id", text) } | "." < simple > { Pair.new("class", text) })
1870
1997
  def _select
1871
1998
 
1872
1999
  _save = self.pos
@@ -1888,7 +2015,7 @@ class Dang::Parser
1888
2015
  self.pos = _save1
1889
2016
  break
1890
2017
  end
1891
- @result = begin; ["id", text] ; end
2018
+ @result = begin; Pair.new("id", text) ; end
1892
2019
  _tmp = true
1893
2020
  unless _tmp
1894
2021
  self.pos = _save1
@@ -1915,7 +2042,7 @@ class Dang::Parser
1915
2042
  self.pos = _save2
1916
2043
  break
1917
2044
  end
1918
- @result = begin; ["class", text] ; end
2045
+ @result = begin; Pair.new("class", text) ; end
1919
2046
  _tmp = true
1920
2047
  unless _tmp
1921
2048
  self.pos = _save2
@@ -2101,7 +2228,7 @@ class Dang::Parser
2101
2228
  return _tmp
2102
2229
  end
2103
2230
 
2104
- # tag = (start:l slash { "<#{l} />" } | start:l space+ end:r { "<#{l}></#{r}>" } | start:l attrs:a slash { "<#{l} #{attrs(a)} />" } | start:l selects:t slash { "<#{l} #{attrs(t)} />" } | start:l selects:t attrs:a slash { "<#{l} #{attrs(t,a)} />" } | start:l attrs:a space+ end:r { "<#{l} #{attrs(a)}></#{r}>" } | start:l selects:t space+ end:r { "<#{l} #{attrs(t)}></#{r}>" } | start:l selects:t attrs:a space+ end:r { "<#{l} #{attrs(t,a)}></#{r}>" } | start:l selects:t attrs:a pts body:b pts:es end:r { joinm "<#{l} #{attrs(a,t)}>",b,es,"</#{r}>" } | start:l attrs:a pts body:b pts:es end:r { joinm "<#{l} #{attrs(a)}>", b, es, "</#{r}>" } | start:l selects:t pts:s body:b pts:es end:r { joinm "<#{l} #{attrs(t)}>",s, b, es, "</#{r}>" } | start:l pts:s body:b pts:es end:r { joinm "<#{l}>", s, b, es, "</#{r}>" })
2231
+ # tag = (start:l slash { "<#{l} />" } | start:l space+ end:r { "<#{l}></#{r}>" } | start:l attrs:a slash { joinm "<#{l} ", attrs(a), " />" } | start:l selects:t slash { joinm "<#{l} ", attrs(t), " />" } | start:l selects:t attrs:a slash { joinm "<#{l} ", attrs(t,a), " />" } | start:l attrs:a space+ end:r { joinm "<#{l} ", attrs(a), "></#{r}>" } | start:l selects:t space+ end:r { joinm "<#{l} ", attrs(t), "></#{r}>" } | start:l selects:t attrs:a space+ end:r { joinm "<#{l} ", attrs(t,a), "></#{r}>" } | start:l selects:t attrs:a pts body:b pts:es end:r { joinm "<#{l} ", attrs(a,t), ">",b,es,"</#{r}>" } | start:l attrs:a pts body:b pts:es end:r { joinm "<#{l} ", attrs(a), ">", b, es, "</#{r}>" } | start:l selects:t pts:s body:b pts:es end:r { joinm "<#{l} ", attrs(t), ">",s, b, es, "</#{r}>" } | start:l pts:s body:b pts:es end:r { joinm "<#{l}>", s, b, es, "</#{r}>" })
2105
2232
  def _tag
2106
2233
 
2107
2234
  _save = self.pos
@@ -2190,7 +2317,7 @@ class Dang::Parser
2190
2317
  self.pos = _save4
2191
2318
  break
2192
2319
  end
2193
- @result = begin; "<#{l} #{attrs(a)} />" ; end
2320
+ @result = begin; joinm "<#{l} ", attrs(a), " />" ; end
2194
2321
  _tmp = true
2195
2322
  unless _tmp
2196
2323
  self.pos = _save4
@@ -2220,7 +2347,7 @@ class Dang::Parser
2220
2347
  self.pos = _save5
2221
2348
  break
2222
2349
  end
2223
- @result = begin; "<#{l} #{attrs(t)} />" ; end
2350
+ @result = begin; joinm "<#{l} ", attrs(t), " />" ; end
2224
2351
  _tmp = true
2225
2352
  unless _tmp
2226
2353
  self.pos = _save5
@@ -2256,7 +2383,7 @@ class Dang::Parser
2256
2383
  self.pos = _save6
2257
2384
  break
2258
2385
  end
2259
- @result = begin; "<#{l} #{attrs(t,a)} />" ; end
2386
+ @result = begin; joinm "<#{l} ", attrs(t,a), " />" ; end
2260
2387
  _tmp = true
2261
2388
  unless _tmp
2262
2389
  self.pos = _save6
@@ -2302,7 +2429,7 @@ class Dang::Parser
2302
2429
  self.pos = _save7
2303
2430
  break
2304
2431
  end
2305
- @result = begin; "<#{l} #{attrs(a)}></#{r}>" ; end
2432
+ @result = begin; joinm "<#{l} ", attrs(a), "></#{r}>" ; end
2306
2433
  _tmp = true
2307
2434
  unless _tmp
2308
2435
  self.pos = _save7
@@ -2348,7 +2475,7 @@ class Dang::Parser
2348
2475
  self.pos = _save9
2349
2476
  break
2350
2477
  end
2351
- @result = begin; "<#{l} #{attrs(t)}></#{r}>" ; end
2478
+ @result = begin; joinm "<#{l} ", attrs(t), "></#{r}>" ; end
2352
2479
  _tmp = true
2353
2480
  unless _tmp
2354
2481
  self.pos = _save9
@@ -2400,7 +2527,7 @@ class Dang::Parser
2400
2527
  self.pos = _save11
2401
2528
  break
2402
2529
  end
2403
- @result = begin; "<#{l} #{attrs(t,a)}></#{r}>" ; end
2530
+ @result = begin; joinm "<#{l} ", attrs(t,a), "></#{r}>" ; end
2404
2531
  _tmp = true
2405
2532
  unless _tmp
2406
2533
  self.pos = _save11
@@ -2454,7 +2581,7 @@ class Dang::Parser
2454
2581
  self.pos = _save13
2455
2582
  break
2456
2583
  end
2457
- @result = begin; joinm "<#{l} #{attrs(a,t)}>",b,es,"</#{r}>" ; end
2584
+ @result = begin; joinm "<#{l} ", attrs(a,t), ">",b,es,"</#{r}>" ; end
2458
2585
  _tmp = true
2459
2586
  unless _tmp
2460
2587
  self.pos = _save13
@@ -2502,7 +2629,7 @@ class Dang::Parser
2502
2629
  self.pos = _save14
2503
2630
  break
2504
2631
  end
2505
- @result = begin; joinm "<#{l} #{attrs(a)}>", b, es, "</#{r}>" ; end
2632
+ @result = begin; joinm "<#{l} ", attrs(a), ">", b, es, "</#{r}>" ; end
2506
2633
  _tmp = true
2507
2634
  unless _tmp
2508
2635
  self.pos = _save14
@@ -2551,7 +2678,7 @@ class Dang::Parser
2551
2678
  self.pos = _save15
2552
2679
  break
2553
2680
  end
2554
- @result = begin; joinm "<#{l} #{attrs(t)}>",s, b, es, "</#{r}>" ; end
2681
+ @result = begin; joinm "<#{l} ", attrs(t), ">",s, b, es, "</#{r}>" ; end
2555
2682
  _tmp = true
2556
2683
  unless _tmp
2557
2684
  self.pos = _save15
@@ -2671,20 +2798,24 @@ class Dang::Parser
2671
2798
  Rules[:_part] = rule_info("part", "(ruby | puby | filter | comment | tag | chunk)")
2672
2799
  Rules[:_body] = rule_info("body", "(part:p body:b { join(p,b) } | part)")
2673
2800
  Rules[:_key] = rule_info("key", "(name | \"'\" < /[^'\\n]*/ > \"'\" { text })")
2674
- Rules[:_val] = rule_info("val", "(\"'\" < /[^'\\n]*/ > \"'\" { text } | < (!\"]\" .)* > { text })")
2675
- Rules[:_dattr] = rule_info("dattr", "\"[\" key:k \"=\" val:v \"]\" { \"data-\#{k}='\#{v}'\" }")
2676
- Rules[:_dattrs] = rule_info("dattrs", "(dattr:a dattrs:l { \"\#{a} \#{l}\" } | dattr)")
2677
- Rules[:_attr] = rule_info("attr", "(\"[data\" dattrs:t \"]\" { [t,true] } | \"[\" key:k \"=\" val:v \"]\" { [k, v] } | \"[\" key:k \"]\" { [k,true] })")
2801
+ Rules[:_valsrt] = rule_info("valsrt", "(\"]\" | \"<|\")")
2802
+ Rules[:_valchk] = rule_info("valchk", "< (!valsrt .)* > { text }")
2803
+ Rules[:_valprt] = rule_info("valprt", "(puby | valchk)")
2804
+ Rules[:_valraw] = rule_info("valraw", "(valprt:p valraw:b { join(p,b) } | valprt)")
2805
+ Rules[:_val] = rule_info("val", "(\"'\" < /[^'\\n]*/ > \"'\" { text } | valraw)")
2806
+ Rules[:_dattr] = rule_info("dattr", "\"[\" key:k \"=\" val:v \"]\" { Pair.new(\"data-\#{k}\", v) }")
2807
+ Rules[:_dattrs] = rule_info("dattrs", "(dattr:a dattrs:l { [a] + l } | dattr:a { [a] })")
2808
+ Rules[:_attr] = rule_info("attr", "(\"[data\" dattrs:t \"]\" { t } | \"[\" key:k \"=\" val:v \"]\" { Pair.new(k, v) } | \"[\" key:k \"]\" { Pair.new(k,true) })")
2678
2809
  Rules[:_attrs] = rule_info("attrs", "(attr:a attrs:l { [a] + l } | attr:a { [a] })")
2679
2810
  Rules[:_cc_if] = rule_info("cc_if", "/[iI][fF]/")
2680
2811
  Rules[:_cc_end] = rule_info("cc_end", "/[eE][nN][dD][iI][fF]/")
2681
2812
  Rules[:_comment] = rule_info("comment", "(\"<!\" space+ < \"[\" space* cc_if (!\"]\" .)* \"]\" > space+ \"!>\" { \"<!--\#{text}>\" } | \"<!\" space+ < \"[\" space* cc_end (!\"]\" .)* \"]\" > space+ \"!>\" { \"<!\#{text}-->\" } | \"<!\" < (!\"!>\" .)* > \"!>\" { \"<!--\#{text}-->\" })")
2682
2813
  Rules[:_simple] = rule_info("simple", "/[a-zA-Z0-9_\\-]+/")
2683
- Rules[:_select] = rule_info("select", "(\"\#\" < simple > { [\"id\", text] } | \".\" < simple > { [\"class\", text] })")
2814
+ Rules[:_select] = rule_info("select", "(\"\#\" < simple > { Pair.new(\"id\", text) } | \".\" < simple > { Pair.new(\"class\", text) })")
2684
2815
  Rules[:_selects] = rule_info("selects", "(select:s selects:t { [s] + t } | select:s { [s] })")
2685
2816
  Rules[:_end_filter] = rule_info("end_filter", "bs* < /[a-zA-Z]+/ > &{ n == text } \":>\"")
2686
2817
  Rules[:_filter] = rule_info("filter", "\"<:\" name:n bs* < (!end_filter(n) .)* > end_filter(n) { Filter.new(n, text) }")
2687
- Rules[:_tag] = rule_info("tag", "(start:l slash { \"<\#{l} />\" } | start:l space+ end:r { \"<\#{l}></\#{r}>\" } | start:l attrs:a slash { \"<\#{l} \#{attrs(a)} />\" } | start:l selects:t slash { \"<\#{l} \#{attrs(t)} />\" } | start:l selects:t attrs:a slash { \"<\#{l} \#{attrs(t,a)} />\" } | start:l attrs:a space+ end:r { \"<\#{l} \#{attrs(a)}></\#{r}>\" } | start:l selects:t space+ end:r { \"<\#{l} \#{attrs(t)}></\#{r}>\" } | start:l selects:t attrs:a space+ end:r { \"<\#{l} \#{attrs(t,a)}></\#{r}>\" } | start:l selects:t attrs:a pts body:b pts:es end:r { joinm \"<\#{l} \#{attrs(a,t)}>\",b,es,\"</\#{r}>\" } | start:l attrs:a pts body:b pts:es end:r { joinm \"<\#{l} \#{attrs(a)}>\", b, es, \"</\#{r}>\" } | start:l selects:t pts:s body:b pts:es end:r { joinm \"<\#{l} \#{attrs(t)}>\",s, b, es, \"</\#{r}>\" } | start:l pts:s body:b pts:es end:r { joinm \"<\#{l}>\", s, b, es, \"</\#{r}>\" })")
2818
+ Rules[:_tag] = rule_info("tag", "(start:l slash { \"<\#{l} />\" } | start:l space+ end:r { \"<\#{l}></\#{r}>\" } | start:l attrs:a slash { joinm \"<\#{l} \", attrs(a), \" />\" } | start:l selects:t slash { joinm \"<\#{l} \", attrs(t), \" />\" } | start:l selects:t attrs:a slash { joinm \"<\#{l} \", attrs(t,a), \" />\" } | start:l attrs:a space+ end:r { joinm \"<\#{l} \", attrs(a), \"></\#{r}>\" } | start:l selects:t space+ end:r { joinm \"<\#{l} \", attrs(t), \"></\#{r}>\" } | start:l selects:t attrs:a space+ end:r { joinm \"<\#{l} \", attrs(t,a), \"></\#{r}>\" } | start:l selects:t attrs:a pts body:b pts:es end:r { joinm \"<\#{l} \", attrs(a,t), \">\",b,es,\"</\#{r}>\" } | start:l attrs:a pts body:b pts:es end:r { joinm \"<\#{l} \", attrs(a), \">\", b, es, \"</\#{r}>\" } | start:l selects:t pts:s body:b pts:es end:r { joinm \"<\#{l} \", attrs(t), \">\",s, b, es, \"</\#{r}>\" } | start:l pts:s body:b pts:es end:r { joinm \"<\#{l}>\", s, b, es, \"</\#{r}>\" })")
2688
2819
  Rules[:_root] = rule_info("root", "doctype? body:b eof { @output = join(b,\"\") }")
2689
2820
  # :startdoc:
2690
2821
  end
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "attributes" do
4
4
  it "transforms Dang tag[attr=value] into HTML tag with an attribute and value" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "comments" do
4
4
  it "transforms Dang <! comment !> comments into html comments" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # from
4
4
  # <! [if IE] !>
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "data attributes" do
4
4
  it "transforms normal data attributes comments" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "doctypes" do
4
4
  # based largely on HAML's doctype with a minor variation
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "embedded ruby" do
4
4
  it "farms out to Ruby for and does not return any output" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # TODO experimental
4
4
  # for v2
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # filters
4
4
  # <:markdown
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # TODO experimental
4
4
  # for v2
@@ -12,7 +12,7 @@ require "spectory/helper"
12
12
  # # <body[foo=#{bar}]{attrs, attrs}
13
13
  # # <body{ hidden }
14
14
  # # <body#id.class.class2{ attrs }
15
- # # <body#id.class.class2<= attrs =>
15
+ # # <body#id.class.class2<| attrs |>
16
16
  #
17
17
  # # TODO experimental
18
18
  #
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # describe "script tags" do
4
4
  # it "skips js that looks like a closing dang tag" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # describe "style tags" do
4
4
  # it "skips css that looks like a closing dang tag" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "files" do
4
4
  it "can transform a whole document" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # filters
4
4
  # <:markdown
File without changes
@@ -0,0 +1,12 @@
1
+ require "specs/helper"
2
+
3
+ describe "interpolation" do
4
+ # it "should allow ruby interpolation in ids"
5
+ # it "should allow ruby interpolation in classes"
6
+
7
+ it "should interpolate in attributes" do
8
+ foo = "bar"
9
+
10
+ Dang.it("<time[name=<| foo |>-<| foo |>] <| foo |> time>", binding).must_equal "<time name='bar-bar'>bar</time>"
11
+ end
12
+ end
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "sanity" do
4
4
  before do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "script tags" do
4
4
  it "treats script tag special" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "selectors" do
4
4
  it "transforms Dang tag#id into HTML tag with an id attribute" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "style tags" do
4
4
  it "treats style tags special" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  describe "tags" do
4
4
  it "transforms Dang tag to HTML tag with no content" do
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # TODO experimental
4
4
 
@@ -1,4 +1,4 @@
1
- require "spectory/helper"
1
+ require "specs/helper"
2
2
 
3
3
  # something like HAML's aligator operator
4
4
  # http://haml-lang.com/docs/yardoc/file.HAML_REFERENCE.html#whitespace_removal__and_
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dang
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0
4
+ version: 2.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shane Becker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-20 00:00:00.000000000 Z
11
+ date: 2015-02-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rdoc
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '3.13'
33
+ version: '3.12'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '3.13'
40
+ version: '3.12'
41
41
  description: |-
42
42
  Dang is a Ruby templating language.
43
43
  It uses angle brackets and CSS syntax.
@@ -51,7 +51,6 @@ extra_rdoc_files:
51
51
  - History.md
52
52
  - Manifest.txt
53
53
  - README.md
54
- - TODO.md
55
54
  files:
56
55
  - ".hoeignore"
57
56
  - Gemfile
@@ -60,7 +59,6 @@ files:
60
59
  - Manifest.txt
61
60
  - README.md
62
61
  - Rakefile
63
- - TODO.md
64
62
  - bin/dang
65
63
  - dang.gemspec
66
64
  - lib/dang.rb
@@ -68,30 +66,30 @@ files:
68
66
  - lib/dang/parser.kpeg
69
67
  - lib/dang/parser.rb
70
68
  - lib/dang/rails.rb
71
- - spectory/attribute_spec.rb
72
- - spectory/comment_spec.rb
73
- - spectory/conditional_comment_spec.rb
74
- - spectory/data_attribute_spec.rb
75
- - spectory/doctype_spec.rb
76
- - spectory/embedded_ruby_spec.rb
77
- - spectory/file_spec.rb
78
- - spectory/files/iamshane-com.html
79
- - spectory/files/iamshane-com.html.dang
80
- - spectory/filter_spec.rb
81
- - spectory/helper.rb
82
- - spectory/sanity_spec.rb
83
- - spectory/script_spec.rb
84
- - spectory/selector_spec.rb
85
- - spectory/style_spec.rb
86
- - spectory/tag_spec.rb
87
- - spectory/v2/array_classes_spec.rb
88
- - spectory/v2/filters/markdown_spec.rb
89
- - spectory/v2/hash_attribute_spec.rb
90
- - spectory/v2/interpolation_spec.rb
91
- - spectory/v2/script_exception_spec.rb
92
- - spectory/v2/style_exception_spec.rb
93
- - spectory/well_formedness_spec.rb
94
- - spectory/whitespace_spec.rb
69
+ - specs/attribute_spec.rb
70
+ - specs/comment_spec.rb
71
+ - specs/conditional_comment_spec.rb
72
+ - specs/data_attribute_spec.rb
73
+ - specs/doctype_spec.rb
74
+ - specs/embedded_ruby_spec.rb
75
+ - specs/experiments/array_classes_spec.rb
76
+ - specs/experiments/filters/markdown_spec.rb
77
+ - specs/experiments/hash_attribute_spec.rb
78
+ - specs/experiments/script_exception_spec.rb
79
+ - specs/experiments/style_exception_spec.rb
80
+ - specs/file_spec.rb
81
+ - specs/files/iamshane-com.html
82
+ - specs/files/iamshane-com.html.dang
83
+ - specs/filter_spec.rb
84
+ - specs/helper.rb
85
+ - specs/interpolation_spec.rb
86
+ - specs/sanity_spec.rb
87
+ - specs/script_spec.rb
88
+ - specs/selector_spec.rb
89
+ - specs/style_spec.rb
90
+ - specs/tag_spec.rb
91
+ - specs/well_formedness_spec.rb
92
+ - specs/whitespace_spec.rb
95
93
  homepage: https://github.com/veganstraightedge/dang
96
94
  licenses:
97
95
  - PUBLIC DOMAIN
data/TODO.md DELETED
File without changes
@@ -1,11 +0,0 @@
1
- require "spectory/helper"
2
-
3
- # TODO experimental
4
- # for v2
5
-
6
- # describe "interpolation" do
7
- # it "should allow ruby interpolation in ids"
8
- # it "should allow ruby interpolation in classes"
9
- # it "should allow ruby interpolation in attributes"
10
- # it "should allow ruby interpolation in values"
11
- # end