dang 1.0.0 → 2.0.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.
- 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 })")
|