dang 1.0.0.rc3 → 1.0.0.rc4
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 +4 -4
- data/.gitignore +9 -0
- data/.hoeignore +2 -0
- data/.travis.yml +9 -0
- data/Manifest.txt +5 -0
- data/README.md +33 -16
- data/Rakefile +15 -4
- data/bin/dang +32 -5
- data/dang.gemspec +37 -0
- data/lib/dang.rb +1 -0
- data/lib/dang/dang.rb +2 -1
- data/lib/dang/parser.rb +5 -3
- data/lib/dang/rails.rb +49 -0
- metadata +17 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3cdcb2f62d81a1f8314380d5f288cdd3f68891a3
|
4
|
+
data.tar.gz: d5384936dce8d468b9ad34123df0c7b082fb690d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 65cbe439dede9b19747e5e13c56a52db56b6777b5872c8267cebb45b62c562fed859ae8a5827b44f0306da6eb3df650db74282c063d462155de4781f44c4e21d
|
7
|
+
data.tar.gz: cb8e43201252121c97169f76c295c22128a1c8388ef92f41dcc93e41fad0fd8515a398af06dc3649158f338da415dfd080962c31c017a0e6bec330ab8d5ff030
|
data/.gitignore
ADDED
data/.hoeignore
ADDED
data/.travis.yml
ADDED
data/Manifest.txt
CHANGED
@@ -1,4 +1,7 @@
|
|
1
1
|
.autotest
|
2
|
+
.gitignore
|
3
|
+
.hoeignore
|
4
|
+
.travis.yml
|
2
5
|
Gemfile
|
3
6
|
Gemfile.lock
|
4
7
|
History.md
|
@@ -7,7 +10,9 @@ README.md
|
|
7
10
|
Rakefile
|
8
11
|
TODO.md
|
9
12
|
bin/dang
|
13
|
+
dang.gemspec
|
10
14
|
lib/dang.rb
|
11
15
|
lib/dang/dang.rb
|
12
16
|
lib/dang/parser.kpeg
|
13
17
|
lib/dang/parser.rb
|
18
|
+
lib/dang/rails.rb
|
data/README.md
CHANGED
@@ -2,35 +2,43 @@
|
|
2
2
|
|
3
3
|
https://github.com/veganstraightedge/dang
|
4
4
|
|
5
|
+
|
5
6
|
## Description
|
6
7
|
|
7
|
-
|
8
|
+
Dang is a Ruby templating language
|
9
|
+
It uses angle brackets and CSS syntax.
|
10
|
+
Somewhere between ERB and Haml.
|
11
|
+
|
8
12
|
|
9
13
|
## Build Status
|
10
14
|
|
11
15
|
[](https://travis-ci.org/veganstraightedge/dang)
|
12
16
|
|
17
|
+
|
13
18
|
## Features
|
14
19
|
|
15
|
-
* CSS selectors for HTML tags
|
20
|
+
* CSS selectors for HTML tags + attributes
|
16
21
|
* Not as noisy syntax than ERB
|
17
|
-
* Not quite as elegant as [
|
22
|
+
* Not quite as elegant as [Haml](http://haml.info)
|
18
23
|
* No %s in your code
|
19
|
-
* More closers than
|
20
|
-
* A lot is based on / inspired by [
|
24
|
+
* More closers than Haml
|
25
|
+
* A lot is based on / inspired by [Haml](http://haml.info)
|
26
|
+
|
21
27
|
|
22
28
|
## Synopsis
|
29
|
+
### Syntax
|
23
30
|
|
24
|
-
*
|
25
|
-
*
|
26
|
-
*
|
27
|
-
*
|
28
|
-
*
|
29
|
-
*
|
30
|
-
*
|
31
|
-
*
|
31
|
+
* `<b a simple bold tag b>`
|
32
|
+
* `<div#id div with an id div>`
|
33
|
+
* `<p.class lorem ipsum p>`
|
34
|
+
* `<a[href=/] Home a>`
|
35
|
+
* `<! html comment !>`
|
36
|
+
* `<- non_printing(ruby) ->`
|
37
|
+
* `<= printing(ruby) =>`
|
38
|
+
* `!!!` doctype shorthand inspired by HAML
|
32
39
|
|
33
|
-
|
40
|
+
|
41
|
+
## Usage
|
34
42
|
|
35
43
|
From the command line, transform a file of dang into html:
|
36
44
|
|
@@ -40,17 +48,22 @@ Or just a snippet of dang into html:
|
|
40
48
|
|
41
49
|
`dang -e "<i snippet i>"`
|
42
50
|
|
51
|
+
|
43
52
|
## Current Version
|
44
53
|
|
45
|
-
1.0.0.
|
54
|
+
1.0.0.rc4
|
55
|
+
|
46
56
|
|
47
57
|
## Requirements
|
48
58
|
|
59
|
+
For development:
|
60
|
+
|
49
61
|
* [rake](https://github.com/jimweirich/rake)
|
50
62
|
* [kpeg](https://github.com/evanphx/kpeg)
|
51
63
|
* [hoe](https://github.com/seattlerb/hoe)
|
52
64
|
* [minitest](https://github.com/seattlerb/minitest)
|
53
65
|
|
66
|
+
|
54
67
|
## Installation
|
55
68
|
|
56
69
|
### Gemfile
|
@@ -69,7 +82,8 @@ Or install it yourself as:
|
|
69
82
|
gem install dang
|
70
83
|
```
|
71
84
|
|
72
|
-
You may need to use
|
85
|
+
You may need to use`sudo` to install it manually.
|
86
|
+
|
73
87
|
|
74
88
|
## Developers
|
75
89
|
|
@@ -81,11 +95,13 @@ bundle
|
|
81
95
|
|
82
96
|
This task will install any missing dependencies, run the tests/specs, and generate the RDoc.
|
83
97
|
|
98
|
+
|
84
99
|
## Authors
|
85
100
|
|
86
101
|
* Shane Becker / [@veganstraightedge](https://github.com/veganstraightedge)
|
87
102
|
* Evan Phoenix / [@evanphx](https://github.com/evanphx)
|
88
103
|
|
104
|
+
|
89
105
|
## Contributing
|
90
106
|
|
91
107
|
1. Fork it
|
@@ -99,6 +115,7 @@ This task will install any missing dependencies, run the tests/specs, and genera
|
|
99
115
|
If you find bugs, have feature requests or questions, please
|
100
116
|
[file an issue](https://github.com/veganstraightedge/dang).
|
101
117
|
|
118
|
+
|
102
119
|
## License
|
103
120
|
|
104
121
|
**PUBLIC DOMAIN**
|
data/Rakefile
CHANGED
@@ -3,13 +3,16 @@ require "hoe"
|
|
3
3
|
|
4
4
|
Hoe.plugins.delete :rubyforge
|
5
5
|
Hoe.plugin :doofus, :git
|
6
|
+
Hoe.plugin :ignore
|
6
7
|
|
7
|
-
Hoe.spec "dang" do
|
8
|
+
HOE = Hoe.spec "dang" do
|
8
9
|
developer "Shane Becker", "veganstraightedge@gmail.com"
|
9
10
|
|
10
|
-
self.extra_rdoc_files =
|
11
|
-
self.history_file =
|
12
|
-
self.readme_file =
|
11
|
+
self.extra_rdoc_files = Dir["*.rdoc"]
|
12
|
+
self.history_file = "History.md"
|
13
|
+
self.readme_file = "README.md"
|
14
|
+
self.licenses << "PUBLIC DOMAIN"
|
15
|
+
self.licenses << "CC0"
|
13
16
|
end
|
14
17
|
|
15
18
|
task :parser do
|
@@ -28,3 +31,11 @@ task :spec do
|
|
28
31
|
|
29
32
|
Minitest.autorun
|
30
33
|
end
|
34
|
+
|
35
|
+
file "#{HOE.spec.name}.gemspec" => ['Rakefile', "lib/dang/dang.rb"] do |t|
|
36
|
+
puts "Generating #{t.name}"
|
37
|
+
File.open(t.name, 'wb') { |f| f.write HOE.spec.to_ruby }
|
38
|
+
end
|
39
|
+
|
40
|
+
desc "Generate or update the standalone gemspec file for the project"
|
41
|
+
task :gemspec => ["#{HOE.spec.name}.gemspec"]
|
data/bin/dang
CHANGED
@@ -4,12 +4,25 @@ require 'dang'
|
|
4
4
|
require 'optparse'
|
5
5
|
|
6
6
|
to_eval = nil
|
7
|
-
path
|
7
|
+
path = nil
|
8
|
+
version = false
|
8
9
|
|
9
10
|
opt = OptionParser.new do |o|
|
11
|
+
o.banner = "Usage: dang [options] [input.dang] [output.html]"
|
12
|
+
|
10
13
|
o.on "-e STR", "Evaluate the string as Dang" do |s|
|
11
14
|
to_eval = s
|
12
15
|
end
|
16
|
+
|
17
|
+
o.on "-v", "--version", "Print the version of Dang" do
|
18
|
+
puts "dang #{Dang::VERSION}, codename: #{Dang::CODENAME}"
|
19
|
+
version = true
|
20
|
+
end
|
21
|
+
|
22
|
+
o.on "-h", "--help", "Print, well, this" do
|
23
|
+
puts opt
|
24
|
+
exit
|
25
|
+
end
|
13
26
|
end
|
14
27
|
|
15
28
|
opt.parse! ARGV
|
@@ -18,9 +31,23 @@ if to_eval
|
|
18
31
|
puts Dang.it(to_eval)
|
19
32
|
|
20
33
|
else
|
21
|
-
|
22
|
-
|
23
|
-
|
34
|
+
input = ARGV.shift
|
35
|
+
|
36
|
+
if !input
|
37
|
+
exit if version
|
38
|
+
puts opt
|
39
|
+
exit 1
|
40
|
+
end
|
41
|
+
|
42
|
+
data = Dang.it(File.read(input))
|
43
|
+
|
44
|
+
if output = ARGV.shift
|
45
|
+
File.open output, "w" do |f|
|
46
|
+
f.puts data
|
47
|
+
end
|
48
|
+
|
49
|
+
puts "Wrote HTML to '#{output}'"
|
50
|
+
else
|
51
|
+
puts data
|
24
52
|
end
|
25
|
-
puts Dang.it(File.read(path))
|
26
53
|
end
|
data/dang.gemspec
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
|
3
|
+
Gem::Specification.new do |s|
|
4
|
+
s.name = "dang"
|
5
|
+
s.version = "1.0.0.rc4"
|
6
|
+
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new("> 1.3.1") if s.respond_to? :required_rubygems_version=
|
8
|
+
s.authors = ["Shane Becker"]
|
9
|
+
s.date = "2013-08-09"
|
10
|
+
s.description = "Dang is a Ruby templating language\nIt uses angle brackets and CSS syntax.\nSomewhere between ERB and Haml."
|
11
|
+
s.email = ["veganstraightedge@gmail.com"]
|
12
|
+
s.executables = ["dang"]
|
13
|
+
s.extra_rdoc_files = ["Manifest.txt"]
|
14
|
+
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.homepage = "https://github.com/veganstraightedge/dang"
|
16
|
+
s.licenses = ["PUBLIC DOMAIN", "CC0"]
|
17
|
+
s.rdoc_options = ["--main", "README.md"]
|
18
|
+
s.require_paths = ["lib"]
|
19
|
+
s.rubyforge_project = "dang"
|
20
|
+
s.rubygems_version = "2.0.3"
|
21
|
+
s.summary = "Dang is a Ruby templating language It uses angle brackets and CSS syntax"
|
22
|
+
|
23
|
+
if s.respond_to? :specification_version then
|
24
|
+
s.specification_version = 4
|
25
|
+
|
26
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
27
|
+
s.add_development_dependency(%q<rdoc>, ["~> 3.10"])
|
28
|
+
s.add_development_dependency(%q<hoe>, ["~> 3.5"])
|
29
|
+
else
|
30
|
+
s.add_dependency(%q<rdoc>, ["~> 3.10"])
|
31
|
+
s.add_dependency(%q<hoe>, ["~> 3.5"])
|
32
|
+
end
|
33
|
+
else
|
34
|
+
s.add_dependency(%q<rdoc>, ["~> 3.10"])
|
35
|
+
s.add_dependency(%q<hoe>, ["~> 3.5"])
|
36
|
+
end
|
37
|
+
end
|
data/lib/dang.rb
CHANGED
data/lib/dang/dang.rb
CHANGED
data/lib/dang/parser.rb
CHANGED
@@ -391,7 +391,7 @@ class Dang::Parser
|
|
391
391
|
DOC_TYPES[@doctype].dup
|
392
392
|
end
|
393
393
|
|
394
|
-
def
|
394
|
+
def compile
|
395
395
|
doctype = html_doctype
|
396
396
|
|
397
397
|
strings = @output.flatten.map do |i|
|
@@ -409,9 +409,11 @@ class Dang::Parser
|
|
409
409
|
end
|
410
410
|
end
|
411
411
|
|
412
|
-
|
412
|
+
"_out = '';\n" + strings.join(";") + ";_out"
|
413
|
+
end
|
413
414
|
|
414
|
-
|
415
|
+
def output(env=nil)
|
416
|
+
out = eval(compile, env || binding).strip
|
415
417
|
|
416
418
|
if doctype.empty?
|
417
419
|
str = out
|
data/lib/dang/rails.rb
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
class Dang
|
2
|
+
class View
|
3
|
+
def handles_encoding?
|
4
|
+
true
|
5
|
+
end
|
6
|
+
|
7
|
+
def valid_encoding(string, encoding)
|
8
|
+
# If a magic encoding comment was found, tag the
|
9
|
+
# String with this encoding. This is for a case
|
10
|
+
# where the original String was assumed to be,
|
11
|
+
# for instance, UTF-8, but a magic comment
|
12
|
+
# proved otherwise
|
13
|
+
string.force_encoding(encoding) if encoding
|
14
|
+
|
15
|
+
# If the String is valid, return the encoding we found
|
16
|
+
return string.encoding if string.valid_encoding?
|
17
|
+
|
18
|
+
# Otherwise, raise an exception
|
19
|
+
raise ActionView::WrongEncodingError.new(string, string.encoding)
|
20
|
+
end
|
21
|
+
|
22
|
+
ENCODING_TAG = Regexp.new("\\A(<-\\s*#{ActionView::ENCODING_FLAG}\\s*->)[ \\t]*")
|
23
|
+
|
24
|
+
def call(template)
|
25
|
+
template_source = template.source.dup.force_encoding(Encoding::ASCII_8BIT)
|
26
|
+
|
27
|
+
dang = template_source.gsub(ENCODING_TAG, '')
|
28
|
+
encoding = $2
|
29
|
+
|
30
|
+
dang.force_encoding valid_encoding(template.source.dup, encoding)
|
31
|
+
|
32
|
+
# Always make sure we return a String in the default_internal
|
33
|
+
dang.encode!
|
34
|
+
|
35
|
+
puts "== Compiling #{dang}"
|
36
|
+
|
37
|
+
parser = Dang::Parser.new(dang, true)
|
38
|
+
unless parser.parse
|
39
|
+
io = StringIO.new
|
40
|
+
parser.show_error(io)
|
41
|
+
raise io.string
|
42
|
+
end
|
43
|
+
|
44
|
+
parser.compile
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
ActionView::Template.register_template_handler :dang, View.new
|
49
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dang
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0.
|
4
|
+
version: 1.0.0.rc4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Shane Becker
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-08-09 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rdoc
|
@@ -18,7 +18,7 @@ dependencies:
|
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: "
|
21
|
+
version: "3.10"
|
22
22
|
type: :development
|
23
23
|
version_requirements: *id001
|
24
24
|
- !ruby/object:Gem::Dependency
|
@@ -28,10 +28,13 @@ dependencies:
|
|
28
28
|
requirements:
|
29
29
|
- - ~>
|
30
30
|
- !ruby/object:Gem::Version
|
31
|
-
version: "3.
|
31
|
+
version: "3.5"
|
32
32
|
type: :development
|
33
33
|
version_requirements: *id002
|
34
|
-
description:
|
34
|
+
description: |-
|
35
|
+
Dang is a Ruby templating language
|
36
|
+
It uses angle brackets and CSS syntax.
|
37
|
+
Somewhere between ERB and Haml.
|
35
38
|
email:
|
36
39
|
- veganstraightedge@gmail.com
|
37
40
|
executables:
|
@@ -39,12 +42,12 @@ executables:
|
|
39
42
|
extensions: []
|
40
43
|
|
41
44
|
extra_rdoc_files:
|
42
|
-
- History.md
|
43
45
|
- Manifest.txt
|
44
|
-
- README.md
|
45
|
-
- TODO.md
|
46
46
|
files:
|
47
47
|
- .autotest
|
48
|
+
- .gitignore
|
49
|
+
- .hoeignore
|
50
|
+
- .travis.yml
|
48
51
|
- Gemfile
|
49
52
|
- Gemfile.lock
|
50
53
|
- History.md
|
@@ -53,13 +56,16 @@ files:
|
|
53
56
|
- Rakefile
|
54
57
|
- TODO.md
|
55
58
|
- bin/dang
|
59
|
+
- dang.gemspec
|
56
60
|
- lib/dang.rb
|
57
61
|
- lib/dang/dang.rb
|
58
62
|
- lib/dang/parser.kpeg
|
59
63
|
- lib/dang/parser.rb
|
64
|
+
- lib/dang/rails.rb
|
60
65
|
homepage: https://github.com/veganstraightedge/dang
|
61
|
-
licenses:
|
62
|
-
|
66
|
+
licenses:
|
67
|
+
- PUBLIC DOMAIN
|
68
|
+
- CC0
|
63
69
|
metadata: {}
|
64
70
|
|
65
71
|
post_install_message:
|
@@ -84,6 +90,6 @@ rubyforge_project: dang
|
|
84
90
|
rubygems_version: 2.0.3
|
85
91
|
signing_key:
|
86
92
|
specification_version: 4
|
87
|
-
summary:
|
93
|
+
summary: Dang is a Ruby templating language It uses angle brackets and CSS syntax
|
88
94
|
test_files: []
|
89
95
|
|