dang 1.0.0 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +6 -14
- data/Gemfile +2 -0
- data/Gemfile.lock +15 -6
- data/History.md +29 -0
- data/Manifest.txt +24 -3
- data/README.md +5 -5
- data/Rakefile +1 -1
- data/bin/dang +2 -4
- data/dang.gemspec +15 -15
- data/lib/dang/dang.rb +2 -2
- data/lib/dang/parser.kpeg +5 -5
- data/lib/dang/parser.rb +50 -32
- data/spectory/attribute_spec.rb +35 -0
- data/spectory/comment_spec.rb +23 -0
- data/spectory/conditional_comment_spec.rb +56 -0
- data/spectory/data_attribute_spec.rb +11 -0
- data/spectory/doctype_spec.rb +38 -0
- data/spectory/embedded_ruby_spec.rb +33 -0
- data/spectory/file_spec.rb +13 -0
- data/spectory/files/iamshane-com.html +229 -0
- data/spectory/files/iamshane-com.html.dang +231 -0
- data/spectory/filter_spec.rb +27 -0
- data/spectory/helper.rb +5 -0
- data/spectory/sanity_spec.rb +11 -0
- data/spectory/script_spec.rb +32 -0
- data/spectory/selector_spec.rb +26 -0
- data/spectory/style_spec.rb +29 -0
- data/spectory/tag_spec.rb +71 -0
- data/spectory/v2/array_classes_spec.rb +12 -0
- data/spectory/v2/filters/markdown_spec.rb +21 -0
- data/spectory/v2/hash_attribute_spec.rb +20 -0
- data/spectory/v2/interpolation_spec.rb +11 -0
- data/spectory/v2/script_exception_spec.rb +8 -0
- data/spectory/v2/style_exception_spec.rb +8 -0
- data/spectory/well_formedness_spec.rb +15 -0
- data/spectory/whitespace_spec.rb +16 -0
- metadata +48 -30
- data/.autotest +0 -12
- data/.gitignore +0 -9
- data/.travis.yml +0 -9
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
NTJjMGEzNzc2Y2FkYmYxNTExMDY4MGE1ZmYzOGI2MDZmYzIyYTdkMTJkMzNm
|
10
|
-
ODM4NTJiOGM3NjJlOTEwZGRjZjMwMzIyNDNhMjQzNjYxNmQ5NjkyOTQ3OGM2
|
11
|
-
YWQ3OTc3YmI4OWFmZWZlMDI4NTc5ODllYzA2N2QyOWVlMWUzZjQ=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZGVhNjI5MGM5NTk2OTVlZDI5ODI5MmJmODAxMWM0YzkwYmU4N2QwMzhhNjM3
|
14
|
-
Nzg2MDU3MWI4ODkwNjJjOWVjMjVlNWE2OTY5NGJhZWI5OWE4NTgwNDI2ZjEz
|
15
|
-
ZDYxYjc0OTk0YzQ1ODZlZmZlMWZkMWQ3OWM1YzVkZmZjY2Y4NTQ=
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: c8392c3b94db03612f7a2ea518733d37540b7439
|
4
|
+
data.tar.gz: 2244fda90a145eb7fb343df496c1ea6f9ad9d28f
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 612aa96b31e4e957fbda3f44ff4cb48a5ed3408b1ddb83c0af78b3d87b2684dec3dd63eb6b43e2bc47989f63980960cbff238b23b359d78397cb02bccad063b6
|
7
|
+
data.tar.gz: a03efa39aa4fe532c8390d84d19722dc49cf16e0763e36bdeef1bbee4e6b0d4dcc9386bd88d3a0dd06f1d3dbfbe5d97b51ba2f81523eec087ccc6ddfdd2b5ab0
|
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,22 +1,31 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
dang (1.0.0)
|
5
|
+
|
1
6
|
GEM
|
2
7
|
remote: https://rubygems.org/
|
3
8
|
specs:
|
4
|
-
hoe (3.
|
9
|
+
hoe (3.13.0)
|
5
10
|
rake (>= 0.8, < 11.0)
|
6
11
|
hoe-doofus (1.0.0)
|
7
|
-
hoe-git (1.
|
8
|
-
|
9
|
-
kpeg (0.
|
10
|
-
minitest (5.
|
11
|
-
rake (10.
|
12
|
+
hoe-git (1.6.0)
|
13
|
+
json (1.8.1)
|
14
|
+
kpeg (1.0.0)
|
15
|
+
minitest (5.4.3)
|
16
|
+
rake (10.3.2)
|
17
|
+
rdoc (3.12.2)
|
18
|
+
json (~> 1.4)
|
12
19
|
|
13
20
|
PLATFORMS
|
14
21
|
ruby
|
15
22
|
|
16
23
|
DEPENDENCIES
|
24
|
+
dang!
|
17
25
|
hoe
|
18
26
|
hoe-doofus
|
19
27
|
hoe-git
|
20
28
|
kpeg
|
21
29
|
minitest
|
22
30
|
rake
|
31
|
+
rdoc (~> 3.10)
|
data/History.md
CHANGED
@@ -1,5 +1,34 @@
|
|
1
1
|
# History
|
2
2
|
|
3
|
+
## 2.0.0 / 2014-11-20
|
4
|
+
|
5
|
+
### Major Features
|
6
|
+
|
7
|
+
1. Fixed two major and obvious syntax mistakes.
|
8
|
+
|
9
|
+
`<- non-printing ruby ->` : As a syntax works great in a vaccum,
|
10
|
+
but not in Ruby 1.9 or higher because of the `->` stabby proc.
|
11
|
+
Duh. That's our bad. Sorry that we didn't catch it in our design
|
12
|
+
and testing.
|
13
|
+
|
14
|
+
`<= printing ruby =>` : Same goes for this. `=>` is used in hashes.
|
15
|
+
Double duh. Both of these should've never made it into the spec.
|
16
|
+
|
17
|
+
For 2.0, we've changed both of them to similar but different syntaxes.
|
18
|
+
|
19
|
+
* `<- non-printing ruby ->` becomes `<: non-printing ruby :>`
|
20
|
+
* `<= printing ruby =>` becomes `<| printing ruby |>`
|
21
|
+
|
22
|
+
Our reason for using `<: :>` is because we were already using a similar
|
23
|
+
syntax for `filters`. `<:raw raw:>`, `<:markdown markdown:>`, etc.
|
24
|
+
Following this pattern, `<: :>` is the default filter and therefore
|
25
|
+
an alias/shorthand for `<:ruby ruby:>`.
|
26
|
+
|
27
|
+
`<| |>` was chosen for visual symmetry/balance and because pipes are
|
28
|
+
already used in Ruby, so they won't feel out of place in Ruby/Rals views.
|
29
|
+
We didn't want to introduce **another** symbol to the aesthic of views.
|
30
|
+
|
31
|
+
|
3
32
|
## 1.0.0 / 2013-09-18
|
4
33
|
|
5
34
|
### Major Features
|
data/Manifest.txt
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
.autotest
|
2
|
-
.gitignore
|
3
1
|
.hoeignore
|
4
|
-
.travis.yml
|
5
2
|
Gemfile
|
6
3
|
Gemfile.lock
|
7
4
|
History.md
|
@@ -16,3 +13,27 @@ lib/dang/dang.rb
|
|
16
13
|
lib/dang/parser.kpeg
|
17
14
|
lib/dang/parser.rb
|
18
15
|
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
|
data/README.md
CHANGED
@@ -5,7 +5,7 @@ https://github.com/veganstraightedge/dang
|
|
5
5
|
|
6
6
|
## Description
|
7
7
|
|
8
|
-
Dang is a Ruby templating language
|
8
|
+
Dang is a Ruby templating language.
|
9
9
|
It uses angle brackets and CSS syntax.
|
10
10
|
Somewhere between ERB and Haml.
|
11
11
|
|
@@ -33,8 +33,8 @@ Somewhere between ERB and Haml.
|
|
33
33
|
* `<p.class lorem ipsum p>`
|
34
34
|
* `<a[href=/] Home a>`
|
35
35
|
* `<! html comment !>`
|
36
|
-
*
|
37
|
-
*
|
36
|
+
* `<: non_printing(ruby) :>`
|
37
|
+
* `<| printing(ruby) |>`
|
38
38
|
* `!!!` doctype shorthand inspired by HAML
|
39
39
|
|
40
40
|
|
@@ -51,7 +51,7 @@ Or just a snippet of dang into html:
|
|
51
51
|
|
52
52
|
## Current Version
|
53
53
|
|
54
|
-
|
54
|
+
2.0.0
|
55
55
|
|
56
56
|
|
57
57
|
## Requirements
|
@@ -82,7 +82,7 @@ Or install it yourself as:
|
|
82
82
|
gem install dang
|
83
83
|
```
|
84
84
|
|
85
|
-
You may need to use`sudo` to install it manually.
|
85
|
+
You may need to use `sudo` to install it manually.
|
86
86
|
|
87
87
|
|
88
88
|
## Developers
|
data/Rakefile
CHANGED
@@ -16,7 +16,7 @@ HOE = Hoe.spec "dang" do
|
|
16
16
|
end
|
17
17
|
|
18
18
|
task :parser do
|
19
|
-
sh "
|
19
|
+
sh "kpeg -o lib/dang/parser.rb -f -n Dang::Parser -s lib/dang/parser.kpeg"
|
20
20
|
end
|
21
21
|
|
22
22
|
$:.unshift "."
|
data/bin/dang
CHANGED
@@ -5,7 +5,6 @@ require 'optparse'
|
|
5
5
|
|
6
6
|
to_eval = nil
|
7
7
|
path = nil
|
8
|
-
version = false
|
9
8
|
|
10
9
|
opt = OptionParser.new do |o|
|
11
10
|
o.banner = "Usage: dang [options] [input.dang] [output.html]"
|
@@ -16,7 +15,7 @@ opt = OptionParser.new do |o|
|
|
16
15
|
|
17
16
|
o.on "-v", "--version", "Print the version of Dang" do
|
18
17
|
puts "dang #{Dang::VERSION}, codename: #{Dang::CODENAME}"
|
19
|
-
|
18
|
+
exit
|
20
19
|
end
|
21
20
|
|
22
21
|
o.on "-h", "--help", "Print, well, this" do
|
@@ -34,7 +33,6 @@ else
|
|
34
33
|
input = ARGV.shift
|
35
34
|
|
36
35
|
if !input
|
37
|
-
exit if version
|
38
36
|
puts opt
|
39
37
|
exit 1
|
40
38
|
end
|
@@ -46,7 +44,7 @@ else
|
|
46
44
|
f.puts data
|
47
45
|
end
|
48
46
|
|
49
|
-
puts "Wrote HTML to '#{output}'"
|
47
|
+
$stderr.puts "Wrote HTML to '#{output}'"
|
50
48
|
else
|
51
49
|
puts data
|
52
50
|
end
|
data/dang.gemspec
CHANGED
@@ -1,37 +1,37 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
|
+
# stub: dang 2.0.0 ruby lib
|
2
3
|
|
3
4
|
Gem::Specification.new do |s|
|
4
5
|
s.name = "dang"
|
5
|
-
s.version = "
|
6
|
+
s.version = "2.0.0"
|
6
7
|
|
7
|
-
s.required_rubygems_version = Gem::Requirement.new("
|
8
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
9
|
+
s.require_paths = ["lib"]
|
8
10
|
s.authors = ["Shane Becker"]
|
9
|
-
s.date = "
|
10
|
-
s.description = "Dang is a Ruby templating language
|
11
|
+
s.date = "2014-11-20"
|
12
|
+
s.description = "Dang is a Ruby templating language.\nIt uses angle brackets and CSS syntax.\nSomewhere between ERB and Haml."
|
11
13
|
s.email = ["veganstraightedge@gmail.com"]
|
12
14
|
s.executables = ["dang"]
|
13
|
-
s.extra_rdoc_files = ["Manifest.txt"]
|
15
|
+
s.extra_rdoc_files = ["History.md", "Manifest.txt", "README.md", "TODO.md"]
|
14
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
17
|
s.homepage = "https://github.com/veganstraightedge/dang"
|
16
18
|
s.licenses = ["PUBLIC DOMAIN", "CC0"]
|
17
19
|
s.rdoc_options = ["--main", "README.md"]
|
18
|
-
s.
|
19
|
-
s.
|
20
|
-
s.rubygems_version = "2.0.3"
|
21
|
-
s.summary = "Dang is a Ruby templating language It uses angle brackets and CSS syntax"
|
20
|
+
s.rubygems_version = "2.2.2"
|
21
|
+
s.summary = "Dang is a Ruby templating language"
|
22
22
|
|
23
23
|
if s.respond_to? :specification_version then
|
24
24
|
s.specification_version = 4
|
25
25
|
|
26
26
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
-
s.add_development_dependency(%q<rdoc>, ["~>
|
28
|
-
s.add_development_dependency(%q<hoe>, ["~> 3.
|
27
|
+
s.add_development_dependency(%q<rdoc>, ["~> 4.0"])
|
28
|
+
s.add_development_dependency(%q<hoe>, ["~> 3.13"])
|
29
29
|
else
|
30
|
-
s.add_dependency(%q<rdoc>, ["~>
|
31
|
-
s.add_dependency(%q<hoe>, ["~> 3.
|
30
|
+
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
31
|
+
s.add_dependency(%q<hoe>, ["~> 3.13"])
|
32
32
|
end
|
33
33
|
else
|
34
|
-
s.add_dependency(%q<rdoc>, ["~>
|
35
|
-
s.add_dependency(%q<hoe>, ["~> 3.
|
34
|
+
s.add_dependency(%q<rdoc>, ["~> 4.0"])
|
35
|
+
s.add_dependency(%q<hoe>, ["~> 3.13"])
|
36
36
|
end
|
37
37
|
end
|
data/lib/dang/dang.rb
CHANGED
data/lib/dang/parser.kpeg
CHANGED
@@ -166,14 +166,14 @@ doctype = "!!!" space* rest:r { @doctype = r.empty? ? "html" : r }
|
|
166
166
|
end = name:n ">" { n }
|
167
167
|
slash = - "/>"
|
168
168
|
|
169
|
-
marker = start | "<!" | "
|
169
|
+
marker = start | "<!" | "<|" | "<:" | (- end)
|
170
170
|
chunk = < (!marker .)* > { text }
|
171
171
|
|
172
|
-
rclose = "
|
173
|
-
ruby = "
|
172
|
+
rclose = ":>"
|
173
|
+
ruby = "<:" bs+ < (!rclose .)* > rclose { code(text, false) }
|
174
174
|
|
175
|
-
pclose = "
|
176
|
-
puby = "
|
175
|
+
pclose = "|>"
|
176
|
+
puby = "<|" < (!pclose .)* > pclose { code(text) }
|
177
177
|
|
178
178
|
part = ruby | puby| filter | comment | tag | chunk
|
179
179
|
body = part:p body:b { join(p,b) }
|
data/lib/dang/parser.rb
CHANGED
@@ -13,8 +13,7 @@ class Dang::Parser
|
|
13
13
|
# Prepares for parsing +str+. If you define a custom initialize you must
|
14
14
|
# call this method before #parse
|
15
15
|
def setup_parser(str, debug=false)
|
16
|
-
|
17
|
-
@pos = 0
|
16
|
+
set_string str, 0
|
18
17
|
@memoizations = Hash.new { |h,k| h[k] = {} }
|
19
18
|
@result = nil
|
20
19
|
@failed_rule = nil
|
@@ -27,7 +26,6 @@ class Dang::Parser
|
|
27
26
|
attr_reader :failing_rule_offset
|
28
27
|
attr_accessor :result, :pos
|
29
28
|
|
30
|
-
|
31
29
|
def current_column(target=pos)
|
32
30
|
if c = string.rindex("\n", target-1)
|
33
31
|
return target - c - 1
|
@@ -61,6 +59,13 @@ class Dang::Parser
|
|
61
59
|
@string[start..@pos-1]
|
62
60
|
end
|
63
61
|
|
62
|
+
# Sets the string and current parsing position for the parser.
|
63
|
+
def set_string string, pos
|
64
|
+
@string = string
|
65
|
+
@string_size = string ? string.size : 0
|
66
|
+
@pos = pos
|
67
|
+
end
|
68
|
+
|
64
69
|
def show_pos
|
65
70
|
width = 10
|
66
71
|
if @pos < width
|
@@ -167,19 +172,19 @@ class Dang::Parser
|
|
167
172
|
return nil
|
168
173
|
end
|
169
174
|
|
170
|
-
if "".respond_to? :
|
175
|
+
if "".respond_to? :ord
|
171
176
|
def get_byte
|
172
|
-
if @pos >= @
|
177
|
+
if @pos >= @string_size
|
173
178
|
return nil
|
174
179
|
end
|
175
180
|
|
176
|
-
s = @string
|
181
|
+
s = @string[@pos].ord
|
177
182
|
@pos += 1
|
178
183
|
s
|
179
184
|
end
|
180
185
|
else
|
181
186
|
def get_byte
|
182
|
-
if @pos >= @
|
187
|
+
if @pos >= @string_size
|
183
188
|
return nil
|
184
189
|
end
|
185
190
|
|
@@ -228,8 +233,7 @@ class Dang::Parser
|
|
228
233
|
old_pos = @pos
|
229
234
|
old_string = @string
|
230
235
|
|
231
|
-
|
232
|
-
@string = other.string
|
236
|
+
set_string other.string, other.pos
|
233
237
|
|
234
238
|
begin
|
235
239
|
if val = __send__(rule, *args)
|
@@ -240,8 +244,7 @@ class Dang::Parser
|
|
240
244
|
end
|
241
245
|
val
|
242
246
|
ensure
|
243
|
-
|
244
|
-
@string = old_string
|
247
|
+
set_string old_string, old_pos
|
245
248
|
end
|
246
249
|
end
|
247
250
|
|
@@ -860,7 +863,7 @@ class Dang::Parser
|
|
860
863
|
return _tmp
|
861
864
|
end
|
862
865
|
|
863
|
-
# marker = (start | "<!" | "
|
866
|
+
# marker = (start | "<!" | "<|" | "<:" | - end)
|
864
867
|
def _marker
|
865
868
|
|
866
869
|
_save = self.pos
|
@@ -871,10 +874,10 @@ class Dang::Parser
|
|
871
874
|
_tmp = match_string("<!")
|
872
875
|
break if _tmp
|
873
876
|
self.pos = _save
|
874
|
-
_tmp = match_string("
|
877
|
+
_tmp = match_string("<|")
|
875
878
|
break if _tmp
|
876
879
|
self.pos = _save
|
877
|
-
_tmp = match_string("
|
880
|
+
_tmp = match_string("<:")
|
878
881
|
break if _tmp
|
879
882
|
self.pos = _save
|
880
883
|
|
@@ -948,19 +951,34 @@ class Dang::Parser
|
|
948
951
|
return _tmp
|
949
952
|
end
|
950
953
|
|
951
|
-
# rclose = "
|
954
|
+
# rclose = ":>"
|
952
955
|
def _rclose
|
953
|
-
_tmp = match_string("
|
956
|
+
_tmp = match_string(":>")
|
954
957
|
set_failed_rule :_rclose unless _tmp
|
955
958
|
return _tmp
|
956
959
|
end
|
957
960
|
|
958
|
-
# ruby = "
|
961
|
+
# ruby = "<:" bs+ < (!rclose .)* > rclose { code(text, false) }
|
959
962
|
def _ruby
|
960
963
|
|
961
964
|
_save = self.pos
|
962
965
|
while true # sequence
|
963
|
-
_tmp = match_string("
|
966
|
+
_tmp = match_string("<:")
|
967
|
+
unless _tmp
|
968
|
+
self.pos = _save
|
969
|
+
break
|
970
|
+
end
|
971
|
+
_save1 = self.pos
|
972
|
+
_tmp = apply(:_bs)
|
973
|
+
if _tmp
|
974
|
+
while true
|
975
|
+
_tmp = apply(:_bs)
|
976
|
+
break unless _tmp
|
977
|
+
end
|
978
|
+
_tmp = true
|
979
|
+
else
|
980
|
+
self.pos = _save1
|
981
|
+
end
|
964
982
|
unless _tmp
|
965
983
|
self.pos = _save
|
966
984
|
break
|
@@ -968,19 +986,19 @@ class Dang::Parser
|
|
968
986
|
_text_start = self.pos
|
969
987
|
while true
|
970
988
|
|
971
|
-
|
989
|
+
_save3 = self.pos
|
972
990
|
while true # sequence
|
973
|
-
|
991
|
+
_save4 = self.pos
|
974
992
|
_tmp = apply(:_rclose)
|
975
993
|
_tmp = _tmp ? nil : true
|
976
|
-
self.pos =
|
994
|
+
self.pos = _save4
|
977
995
|
unless _tmp
|
978
|
-
self.pos =
|
996
|
+
self.pos = _save3
|
979
997
|
break
|
980
998
|
end
|
981
999
|
_tmp = get_byte
|
982
1000
|
unless _tmp
|
983
|
-
self.pos =
|
1001
|
+
self.pos = _save3
|
984
1002
|
end
|
985
1003
|
break
|
986
1004
|
end # end sequence
|
@@ -1012,19 +1030,19 @@ class Dang::Parser
|
|
1012
1030
|
return _tmp
|
1013
1031
|
end
|
1014
1032
|
|
1015
|
-
# pclose = "
|
1033
|
+
# pclose = "|>"
|
1016
1034
|
def _pclose
|
1017
|
-
_tmp = match_string("
|
1035
|
+
_tmp = match_string("|>")
|
1018
1036
|
set_failed_rule :_pclose unless _tmp
|
1019
1037
|
return _tmp
|
1020
1038
|
end
|
1021
1039
|
|
1022
|
-
# puby = "
|
1040
|
+
# puby = "<|" < (!pclose .)* > pclose { code(text) }
|
1023
1041
|
def _puby
|
1024
1042
|
|
1025
1043
|
_save = self.pos
|
1026
1044
|
while true # sequence
|
1027
|
-
_tmp = match_string("
|
1045
|
+
_tmp = match_string("<|")
|
1028
1046
|
unless _tmp
|
1029
1047
|
self.pos = _save
|
1030
1048
|
break
|
@@ -2644,12 +2662,12 @@ class Dang::Parser
|
|
2644
2662
|
Rules[:_pts] = rule_info("pts", "(space+ { \"\" } | < eol bs* > { text })")
|
2645
2663
|
Rules[:_end] = rule_info("end", "name:n \">\" { n }")
|
2646
2664
|
Rules[:_slash] = rule_info("slash", "- \"/>\"")
|
2647
|
-
Rules[:_marker] = rule_info("marker", "(start | \"<!\" | \"
|
2665
|
+
Rules[:_marker] = rule_info("marker", "(start | \"<!\" | \"<|\" | \"<:\" | - end)")
|
2648
2666
|
Rules[:_chunk] = rule_info("chunk", "< (!marker .)* > { text }")
|
2649
|
-
Rules[:_rclose] = rule_info("rclose", "\"
|
2650
|
-
Rules[:_ruby] = rule_info("ruby", "\"
|
2651
|
-
Rules[:_pclose] = rule_info("pclose", "\"
|
2652
|
-
Rules[:_puby] = rule_info("puby", "\"
|
2667
|
+
Rules[:_rclose] = rule_info("rclose", "\":>\"")
|
2668
|
+
Rules[:_ruby] = rule_info("ruby", "\"<:\" bs+ < (!rclose .)* > rclose { code(text, false) }")
|
2669
|
+
Rules[:_pclose] = rule_info("pclose", "\"|>\"")
|
2670
|
+
Rules[:_puby] = rule_info("puby", "\"<|\" < (!pclose .)* > pclose { code(text) }")
|
2653
2671
|
Rules[:_part] = rule_info("part", "(ruby | puby | filter | comment | tag | chunk)")
|
2654
2672
|
Rules[:_body] = rule_info("body", "(part:p body:b { join(p,b) } | part)")
|
2655
2673
|
Rules[:_key] = rule_info("key", "(name | \"'\" < /[^'\\n]*/ > \"'\" { text })")
|