doublesing 0.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.
- checksums.yaml +7 -0
- data/.gitignore +11 -0
- data/.rspec +2 -0
- data/.travis.yml +9 -0
- data/CODE_OF_CONDUCT.md +7 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +21 -0
- data/README.md +106 -0
- data/Rakefile +12 -0
- data/assets/logo-opt.svg +31 -0
- data/assets/logo.svg +146 -0
- data/bin/console +13 -0
- data/bin/setup +7 -0
- data/doublesing.gemspec +29 -0
- data/lib/doublesing/builtins/bold.rb +14 -0
- data/lib/doublesing/builtins/header.rb +18 -0
- data/lib/doublesing/builtins/italic.rb +13 -0
- data/lib/doublesing/builtins/link.rb +23 -0
- data/lib/doublesing/builtins.rb +12 -0
- data/lib/doublesing/parser.rb +16 -0
- data/lib/doublesing/transformer.rb +10 -0
- data/lib/doublesing/version.rb +3 -0
- data/lib/doublesing.rb +35 -0
- data/tex/general/main.tex +38 -0
- data/tex/inline/bold.tex +13 -0
- data/tex/inline/italic.tex +13 -0
- data/tex/inline-2/header.tex +22 -0
- data/tex/spec.tex +18 -0
- metadata +198 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: ad13d9d3deeaf901709a596512ff350e6e97a0ec
|
4
|
+
data.tar.gz: 5303605eead6d34bdabc2f3a2e47fd0b032ea7cb
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: ed9c583d855e0fae38fff938c948b1e898caeaa3391f2a2b3f486cf72bd7832c9c8e30d817e61f47d9be960053fb6b19e00efbeab4c5d8b2dc596fcdea8d7ee0
|
7
|
+
data.tar.gz: 1cb9ba4adcf2f8c423108105c6011b8c97b8a0e95523cfa0fe7606bfb872d0e6fea25fd60bab8bf480b92181fef8aa6809ce54dc2621a7b70f4afb36fee81462
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
language: ruby
|
2
|
+
rvm:
|
3
|
+
- 2.1.1
|
4
|
+
- 2.2.0
|
5
|
+
|
6
|
+
addons:
|
7
|
+
code_climate:
|
8
|
+
repo_token:
|
9
|
+
secure: "hqU+bvvtga7nqyvxgTV1G0T8IwGeDa4AnM2FwhIXMRbmNrasrG459NkEUZFraKnsAtAb46MCRZTKzAqi8EgdsjwIyH1uY8f3Dmujja7S6v7oc5sDzku7zDLfmSRkTlCiMP3j1JZiHJ84rVPvuTOXL8PXSb1++cB3q6zFYhPq4sM="
|
data/CODE_OF_CONDUCT.md
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
# Contributor Code of Conduct
|
2
|
+
# Developer Code of Conduct
|
3
|
+
|
4
|
+
1. Do not be a jerk for no reason.
|
5
|
+
2. Be nice to new people
|
6
|
+
3. If you're going to yell at somebody, make sure you know them well enough beforehand. Ideally don't even yell at all.
|
7
|
+
4. Don't bring up somebody's personal background, it's almost certainly irrelevant.
|
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2015 Anthony Super
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+

|
2
|
+
|
3
|
+
[](https://travis-ci.org/AnthonySuper/Doublesing)
|
4
|
+
[](https://codeclimate.com/github/AnthonySuper/Doublesing)
|
5
|
+
[](https://codeclimate.com/github/AnthonySuper/Doublesing)
|
6
|
+
|
7
|
+
Doublesing is a wiki markup language based on TeX.
|
8
|
+
It's very simple and extremely flexible.
|
9
|
+
You can register your own tags (including over-riding builtin ones) to suit your needs, effectively allowing a custom dialect to be built with just ruby objects.
|
10
|
+
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Add this line to your application's Gemfile:
|
15
|
+
|
16
|
+
```ruby
|
17
|
+
gem 'doublesing'
|
18
|
+
```
|
19
|
+
|
20
|
+
And then execute:
|
21
|
+
|
22
|
+
$ bundle
|
23
|
+
|
24
|
+
Or install it yourself as:
|
25
|
+
|
26
|
+
$ gem install doublesing
|
27
|
+
|
28
|
+
## Usage
|
29
|
+
|
30
|
+
Doublesing is a TeX-like language designed to be used for online markup.
|
31
|
+
It takes the relatively simple form of:
|
32
|
+
```
|
33
|
+
\BLOCK_ID{ARGUMENT}{ARGUMENT}{ARGUMENT}
|
34
|
+
```
|
35
|
+
Here, maybe a use case will help:
|
36
|
+
|
37
|
+
```
|
38
|
+
\bold{This text becomes bold!}
|
39
|
+
```
|
40
|
+
Becomes:
|
41
|
+
```
|
42
|
+
<b>This text becomes bold!</b>
|
43
|
+
```
|
44
|
+
You can have blocks that take multiple arguments:
|
45
|
+
```
|
46
|
+
\header{1}{This is a header}
|
47
|
+
```
|
48
|
+
|
49
|
+
```
|
50
|
+
<h1>This is a header</h1>
|
51
|
+
```
|
52
|
+
|
53
|
+
Parsing this is easy:
|
54
|
+
```
|
55
|
+
Doublesing.setup! # Must call once, probably in an initializer
|
56
|
+
Doublesing.parse(str) #=> Processed HTML
|
57
|
+
```
|
58
|
+
|
59
|
+
Where it gets interesting is the fact that you can register your own block types.
|
60
|
+
A common use case of this might be to add site-specific functionality.
|
61
|
+
Let's say you're making a website about pictures of famous dogs.
|
62
|
+
You probably want your user to be able to reference dogs pretty quickly.
|
63
|
+
Well, with Doublesing, you can do something like:
|
64
|
+
|
65
|
+
```ruby
|
66
|
+
class DogFinder
|
67
|
+
def initialize(args)
|
68
|
+
@dog_name = args.first
|
69
|
+
@body = args[1]
|
70
|
+
end
|
71
|
+
|
72
|
+
def find_dog
|
73
|
+
dog = Dog.where(name: @dog_name).pluck(:id).first
|
74
|
+
"/dogs/#{dog.id}"
|
75
|
+
end
|
76
|
+
|
77
|
+
def to_s
|
78
|
+
"<a href=\"#{find_dog}\">#{@body.to_s}</a>"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
```
|
82
|
+
Then, register it:
|
83
|
+
|
84
|
+
```ruby
|
85
|
+
Doublesing.register("dog", DogFinder)
|
86
|
+
```
|
87
|
+
|
88
|
+
Now, assuming you're using Doublesing to parse comments, a user can say:
|
89
|
+
```
|
90
|
+
\dog{Rowlf}{My favorite musical dog!}
|
91
|
+
```
|
92
|
+
|
93
|
+
To easily get a link to the page on the piano player of the Muppets.
|
94
|
+
Pretty neat, huh?
|
95
|
+
|
96
|
+
Run `rake specification` to generate a .pdf with the full specification of built-in blocks.
|
97
|
+
|
98
|
+
There aren't that many right now, but you're free to submit a pull request with one!
|
99
|
+
Note: You gotta have PDFLatex installed for that to work.
|
100
|
+
## Contributing
|
101
|
+
|
102
|
+
1. Fork it ( https://github.com/AnthonySuper/Doublesing/fork )
|
103
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
104
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
105
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
106
|
+
5. Create a new Pull Request
|
data/Rakefile
ADDED
data/assets/logo-opt.svg
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
<svg id="svg2" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns="http://www.w3.org/2000/svg" height="382.2" width="321.13" version="1.1" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/">
|
4
|
+
<metadata id="metadata8">
|
5
|
+
<rdf:RDF>
|
6
|
+
<cc:Work rdf:about="">
|
7
|
+
<dc:format>image/svg+xml</dc:format>
|
8
|
+
<dc:type rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
|
9
|
+
<dc:title/>
|
10
|
+
</cc:Work>
|
11
|
+
</rdf:RDF>
|
12
|
+
</metadata>
|
13
|
+
<path id="path2987" stroke-linejoin="miter" d="m46.517,259.69s23.891,26.701,31.386,38.413c7.4952,11.711,13.117,32.323,26.701,31.854,13.585-0.46845,44.034-1.4054,44.034-1.4054s45.908-35.602,52.466-43.565c6.5582-7.9636,21.548-14.99,31.854-58.087,10.31-43.09,7.03-200.95-26.69-200.02-33.73,0.937-154.59,7.963-166.3,23.422-11.711,15.459-20.143,113.84-20.143,113.84l2.8107,3.2791s6.0898,13.585,4.216,21.08c-1.8738,7.4952-1.4054,32.323-1.4054,32.323s19.675,24.828,21.08,38.881z" stroke="#827372" stroke-linecap="butt" stroke-width="2.52960968px" fill="#776968"/>
|
14
|
+
<path id="path3769" fill-opacity="0" d="m297.14,106.98s-29.044-55.277-53.871-74.483c-24.828-19.206-58.556-30.917-91.347-30.449-32.791,0.46844-61.835,0-80.573,15.459s-38.413,9.8374-55.277,40.286c-16.867,30.446-13.119,111.02-13.119,111.02s14.99,69.798,22.954,71.672c0,0-0.46846-13.117-0.46846-36.07,0-22.954-7.9636-50.124,4.216-64.177s28.575-46.845,37.944-53.403c9.3689-6.5582,27.638-24.359,45.439-32.791s29.981-17.333,34.197-17.801c4.216-0.46845,17.332-3.7476,17.332-3.7476s-1.4053,7.0267-6.0898,10.306c-4.6844,3.2791-39.349,53.403-41.692,65.114,0,0,34.665-49.655,40.755-49.655,0,0,5.1529,1.4053-0.46843,9.3689-5.6214,7.9636-22.017,35.602-22.954,47.313,0,0-1.4053,11.711,0.93689,9.3689,0,0,34.197-43.097,37.476-49.655,3.2791-6.5582-17.332,51.529-17.332,51.529l20.612-31.854,1.8738,36.07v15.459s5.6214,7.4951,10.774-2.3422c5.1529-9.8374,7.4951-32.791,7.4951-32.791s2.8107,33.26,1.4053,37.007c-1.4053,3.7476,0.46846,31.854,4.216,33.26,3.7476,1.4054,8.9005-3.2791,14.522-3.7476,5.6214-0.46846,40.286,48.25,40.286,57.15,0,8.9005-11.243,14.522-9.8374,26.701,1.4053,12.18,3.2791,29.512,3.7476,31.386,0.46846,1.8738,0,18.738,3.7476,22.017,3.7476,3.2791,24.828,29.512,29.512-20.612,4.6845-50.124,2.8107-89.942,2.8107-89.942z" stroke-opacity="0"/>
|
15
|
+
<path id="path3791" stroke-linejoin="miter" d="m221.72,181.46s-16.864,19.675-20.143,25.765c-3.2791,6.0898-5.1529-18.269-5.1529-18.269s0-21.549,0.46846-23.891c0.46843-2.3422-2.3422-52.466-2.3422-52.466l-16.864,38.413,1.8738-58.087-24.359,42.16,15.927-55.745-37.007,46.845s16.396-51.529,21.549-57.619c0,0-6.0898-8.9005-37.007,41.223,0,0-6.0898,6.0898-4.6844,3.2791s36.539-65.114,36.539-65.114l3.2791-10.774s-69.33,21.08-89.942,52.934-38.413,66.051-38.413,66.051-2.3422,14.522-0.46843,19.206c1.8738,4.6845-0.93689,49.187-0.93689,49.187s-14.99-15.459-17.801-22.954c-2.8107-7.4951-6.5582-54.808-4.216-59.493,2.3422-4.6845-1.4053-59.961,4.6845-63.24,0,0,19.206-55.277,61.835-61.835,42.629-6.5582,112.43-8.9005,125.54-2.3422,13.116,6.5582,66.988,32.791,75.42,52.466s-20.612,120.39-20.612,120.39z" stroke="#000" stroke-linecap="butt" stroke-width="2.52960968px" fill="#000"/>
|
16
|
+
<path id="path3787" stroke-linejoin="miter" d="m292.82,212.03s1.6562,28.156-26.168,44.055c-27.824,15.9-38.424,14.906-38.424,14.906" stroke="#8b8b8b" stroke-linecap="butt" stroke-miterlimit="4" stroke-dasharray="none" stroke-width="7.58882952" fill="none"/>
|
17
|
+
<path id="path3789" stroke-linejoin="miter" d="m229.56,269.67s-24.843,7.6186-30.143,6.2936c-5.2999-1.325-16.562,1.9874-15.568,5.9623,0.99374,3.9749,0.99374,8.9435,7.2873,8.281,6.2936-0.66248,18.218-4.6374,22.856-7.2873,4.6374-2.6499,8.281-3.9749,12.918-5.2999,4.6374-1.325,2.6499-7.9498,2.6499-7.9498z" stroke="#000" stroke-linecap="butt" stroke-width="2.52960968px" fill="#000"/>
|
18
|
+
<path id="path3775" stroke-linejoin="miter" d="m270.96,105.37s-1.6562-21.531-20.868-40.08c-19.212-18.55-50.017-50.68-83.142-51.674-33.124-0.99373-79.167-1.6562-85.792,1.9874h-7.9498s29.812-20.868,102.02-12.256c72.211,8.6123,121.23,99.372,121.9,103.02,5.6311,1.325,12.256,25.506,20.206,40.411,7.9498,14.906-4.9686,34.118-9.9372,49.355s-18.218,17.225-22.524,19.874c-4.3061,2.65-13.581-1.325-13.581,0.33126,0,1.6562-4.9686,5.2999-6.2936,6.2936-1.325,0.99373-12.587,9.2748-18.55,9.2748-5.9623,0-21.531-8.281-25.174-59.623-3.6436-51.342,21.199-66.248,24.843-66.911,3.6436-0.66248,24.843,0,24.843,0z" stroke="#242424" stroke-linecap="butt" stroke-width="2.52960968px" fill="#282828"/>
|
19
|
+
<g id="flowRoot3793" style="letter-spacing:0px;word-spacing:0px;" font-weight="normal" transform="matrix(2.5296098,0,0,2.5296098,-575.6928,-113.50023)" font-size="8px" font-style="normal" font-family="Sans" line-height="125%" fill="#000">
|
20
|
+
<path id="path3813" d="m241.6,183.98,0,7.9365,1.668,0c1.4082,0,2.4382-0.31901,3.0898-0.95703,0.65624-0.63802,0.98436-1.6452,0.98437-3.0215-0.00001-1.3672-0.32813-2.3675-0.98437-3.001-0.6517-0.63801-1.6816-0.95702-3.0898-0.95703h-1.668m-1.3809-1.1348,2.8369,0c1.9779,0.00001,3.4294,0.41245,4.3545,1.2373,0.92512,0.82032,1.3877,2.1055,1.3877,3.8555,0,1.7591-0.46485,3.0511-1.3945,3.876-0.92969,0.82487-2.3789,1.2373-4.3476,1.2373h-2.8369v-10.206"/>
|
21
|
+
<path id="path3815" d="m253.9,186.27c-0.67448,0.00001-1.2077,0.26433-1.5996,0.79297-0.39193,0.5241-0.58789,1.2442-0.58789,2.1602,0,0.91602,0.19368,1.6384,0.58105,2.167,0.39193,0.52409,0.92741,0.78614,1.6064,0.78613,0.66992,0.00001,1.2008-0.26432,1.5928-0.79296,0.39192-0.52865,0.58789-1.2487,0.58789-2.1602,0-0.9069-0.19597-1.6247-0.58789-2.1533-0.39193-0.5332-0.92285-0.7998-1.5928-0.79981m0-1.0664c1.0937,0.00001,1.9528,0.35547,2.5772,1.0664,0.62434,0.71095,0.93651,1.6953,0.93652,2.9531-0.00001,1.2533-0.31218,2.2376-0.93652,2.9531-0.62436,0.71094-1.4834,1.0664-2.5772,1.0664-1.0983,0-1.9596-0.35547-2.584-1.0664-0.6198-0.71549-0.92969-1.6999-0.92969-2.9531,0-1.2578,0.30989-2.2422,0.92969-2.9531,0.62434-0.71093,1.4857-1.0664,2.584-1.0664"/>
|
22
|
+
<path id="path3817" d="m259.37,190.03,0-4.6348,1.2578,0,0,4.5869c-0.00001,0.72461,0.14127,1.2692,0.42382,1.6338,0.28255,0.36003,0.70638,0.54004,1.2715,0.54004,0.67903,0,1.2145-0.21647,1.6064-0.64941,0.39648-0.43294,0.59472-1.0231,0.59473-1.7705v-4.3408h1.2578v7.6562h-1.2578v-1.1758c-0.30534,0.46484-0.66081,0.8112-1.0664,1.0391-0.40104,0.22331-0.86816,0.33496-1.4014,0.33496-0.87956,0-1.5472-0.27344-2.0029-0.82031-0.45573-0.54688-0.6836-1.3467-0.6836-2.3994m3.165-4.8193"/>
|
23
|
+
<path id="path3819" d="m273.88,189.23c-0.00001-0.92513-0.19141-1.6497-0.57422-2.1738-0.37826-0.52864-0.90007-0.79296-1.5654-0.79297-0.66537,0.00001-1.1895,0.26433-1.5723,0.79297-0.37826,0.5241-0.56739,1.2487-0.56739,2.1738,0,0.92513,0.18913,1.652,0.56739,2.1807,0.3828,0.52409,0.90689,0.78614,1.5723,0.78614,0.66536,0,1.1872-0.26205,1.5654-0.78614,0.38281-0.52864,0.57421-1.2555,0.57422-2.1807m-4.2793-2.6728c0.26432-0.45572,0.597-0.79296,0.99805-1.0117,0.40559-0.2233,0.88867-0.33495,1.4492-0.33496,0.92968,0.00001,1.6839,0.36915,2.2627,1.1074,0.58333,0.73829,0.875,1.709,0.875,2.9121s-0.29167,2.1738-0.875,2.9121c-0.57878,0.73828-1.333,1.1074-2.2627,1.1074-0.56055,0-1.0436-0.10937-1.4492-0.32812-0.40105-0.22331-0.73373-0.56283-0.99805-1.0186v1.1484h-1.2646v-10.637h1.2646v4.1426"/>
|
24
|
+
<path id="path3821" d="m277.27,182.41,1.2578,0,0,10.637-1.2578,0,0-10.637"/>
|
25
|
+
<path id="path3823" d="m287.7,188.91,0,0.61523-5.7832,0c0.0547,0.86589,0.31445,1.5267,0.7793,1.9824,0.4694,0.45117,1.1211,0.67676,1.9551,0.67675,0.48306,0.00001,0.95019-0.0592,1.4014-0.17773,0.45573-0.11849,0.9069-0.29622,1.3535-0.5332v1.1894c-0.45118,0.19141-0.91374,0.33724-1.3877,0.4375s-0.95475,0.15039-1.4424,0.15039c-1.2214,0-2.1898-0.35547-2.9053-1.0664-0.71094-0.71093-1.0664-1.6725-1.0664-2.8848,0-1.2532,0.33724-2.2467,1.0117-2.9805,0.67903-0.73827,1.5928-1.1074,2.7412-1.1074,1.0299,0.00001,1.8434,0.33269,2.4404,0.99804,0.60156,0.66082,0.90234,1.5609,0.90235,2.7002m-1.2578-0.36914c-0.009-0.68815-0.2028-1.2373-0.58105-1.6475-0.37371-0.41015-0.87045-0.61523-1.4902-0.61524-0.70182,0.00001-1.2646,0.19825-1.6885,0.59473-0.41928,0.39649-0.66081,0.95476-0.72461,1.6748l4.4844-0.007"/>
|
26
|
+
<path id="path3825" d="m294.65,185.62,0,1.1895c-0.35548-0.18229-0.72462-0.31901-1.1074-0.41016-0.38282-0.0911-0.77931-0.13671-1.1895-0.13672-0.62435,0.00001-1.0938,0.0957-1.4082,0.28711-0.3099,0.19141-0.46485,0.47852-0.46484,0.86133-0.00001,0.29167,0.11165,0.52181,0.33496,0.69043,0.2233,0.16407,0.67219,0.32129,1.3467,0.47168l0.43066,0.0957c0.89322,0.19141,1.5267,0.46257,1.9004,0.81348,0.37825,0.34636,0.56738,0.83171,0.56738,1.456,0,0.71094-0.28255,1.2738-0.84765,1.6885-0.56055,0.41471-1.333,0.62207-2.3174,0.62207-0.41015,0-0.83854-0.041-1.2852-0.12305-0.44206-0.0775-0.90918-0.19596-1.4014-0.35547v-1.2988c0.46484,0.24153,0.92285,0.42383,1.374,0.54687,0.45117,0.11849,0.89779,0.17774,1.3398,0.17774,0.59244,0,1.0482-0.10026,1.3672-0.30079,0.319-0.20507,0.47851-0.49218,0.47851-0.86132,0-0.3418-0.11621-0.60384-0.34863-0.78614-0.22787-0.18228-0.73145-0.35774-1.5107-0.52636l-0.4375-0.10254c-0.7793-0.16406-1.3421-0.41471-1.6885-0.75196-0.34635-0.34179-0.51953-0.80891-0.51953-1.4014,0-0.72005,0.25521-1.276,0.76562-1.668,0.51042-0.39192,1.235-0.58788,2.1738-0.58789,0.46484,0.00001,0.90234,0.0342,1.3125,0.10254,0.41015,0.0684,0.78841,0.1709,1.1348,0.30761"/>
|
27
|
+
<path id="path3827" d="m297.07,185.39,1.2578,0,0,7.6562-1.2578,0,0-7.6562m0-2.9805,1.2578,0,0,1.5928-1.2578,0,0-1.5928"/>
|
28
|
+
<path id="path3829" d="m307.31,188.43,0,4.6211-1.2578,0,0-4.5801c-0.00001-0.7246-0.14128-1.2669-0.42383-1.627-0.28256-0.36002-0.70639-0.54004-1.2715-0.54004-0.67904,0-1.2145,0.21648-1.6064,0.64941-0.39193,0.43295-0.58789,1.0231-0.58789,1.7705v4.3272h-1.2646v-7.6562h1.2646v1.1894c0.30078-0.46028,0.65397-0.80435,1.0596-1.0322,0.41015-0.22785,0.88183-0.34178,1.415-0.34179,0.87955,0.00001,1.5449,0.27344,1.9961,0.82031,0.45117,0.54232,0.67675,1.3421,0.67676,2.3994"/>
|
29
|
+
<path id="path3831" d="m314.87,189.13c-0.00001-0.91146-0.18914-1.6178-0.56739-2.1191-0.3737-0.5013-0.90007-0.75195-1.5791-0.75196-0.67448,0.00001-1.2008,0.25066-1.5791,0.75196-0.3737,0.5013-0.56055,1.2077-0.56055,2.1191,0,0.9069,0.18685,1.611,0.56055,2.1123,0.37825,0.5013,0.90462,0.75195,1.5791,0.75195,0.67903,0,1.2054-0.25065,1.5791-0.75195,0.37825-0.5013,0.56738-1.2054,0.56739-2.1123m1.2578,2.9668c-0.00001,1.3034-0.2894,2.2718-0.86816,2.9053-0.57879,0.63801-1.4652,0.95702-2.6592,0.95703-0.44207-0.00001-0.85906-0.0342-1.251-0.10254-0.39193-0.0638-0.77246-0.16407-1.1416-0.30078v-1.2236c0.36914,0.20052,0.73372,0.34864,1.0938,0.44434,0.36002,0.0957,0.72688,0.14355,1.1006,0.14356,0.82487-0.00001,1.4424-0.21648,1.8525-0.64942,0.41015-0.42839,0.61523-1.0778,0.61524-1.9482v-0.62207c-0.25977,0.45117-0.59246,0.78841-0.99805,1.0117-0.4056,0.2233-0.89095,0.33496-1.456,0.33496-0.93881,0-1.6953-0.35775-2.2695-1.0732-0.57422-0.7155-0.86132-1.6634-0.86132-2.8438,0-1.1849,0.2871-2.1351,0.86132-2.8506,0.57422-0.71549,1.3307-1.0732,2.2695-1.0732,0.5651,0.00001,1.0504,0.11166,1.456,0.33496,0.40559,0.22331,0.73828,0.56055,0.99805,1.0117v-1.1621h1.2578v6.706"/>
|
30
|
+
</g>
|
31
|
+
</svg>
|
data/assets/logo.svg
ADDED
@@ -0,0 +1,146 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
2
|
+
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
3
|
+
|
4
|
+
<svg
|
5
|
+
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
6
|
+
xmlns:cc="http://creativecommons.org/ns#"
|
7
|
+
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
8
|
+
xmlns:svg="http://www.w3.org/2000/svg"
|
9
|
+
xmlns="http://www.w3.org/2000/svg"
|
10
|
+
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
11
|
+
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
12
|
+
id="svg2"
|
13
|
+
version="1.1"
|
14
|
+
inkscape:version="0.48.4 r9939"
|
15
|
+
width="321.12659"
|
16
|
+
height="382.203"
|
17
|
+
sodipodi:docname="logo.svg"
|
18
|
+
inkscape:export-filename="/home/anthony/Desktop/doubsing.png"
|
19
|
+
inkscape:export-xdpi="7089.8486"
|
20
|
+
inkscape:export-ydpi="7089.8486">
|
21
|
+
<metadata
|
22
|
+
id="metadata8">
|
23
|
+
<rdf:RDF>
|
24
|
+
<cc:Work
|
25
|
+
rdf:about="">
|
26
|
+
<dc:format>image/svg+xml</dc:format>
|
27
|
+
<dc:type
|
28
|
+
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
29
|
+
<dc:title />
|
30
|
+
</cc:Work>
|
31
|
+
</rdf:RDF>
|
32
|
+
</metadata>
|
33
|
+
<defs
|
34
|
+
id="defs6" />
|
35
|
+
<sodipodi:namedview
|
36
|
+
pagecolor="#ffffff"
|
37
|
+
bordercolor="#666666"
|
38
|
+
borderopacity="1"
|
39
|
+
objecttolerance="10"
|
40
|
+
gridtolerance="10"
|
41
|
+
guidetolerance="10"
|
42
|
+
inkscape:pageopacity="0"
|
43
|
+
inkscape:pageshadow="2"
|
44
|
+
inkscape:window-width="1215"
|
45
|
+
inkscape:window-height="776"
|
46
|
+
id="namedview4"
|
47
|
+
showgrid="false"
|
48
|
+
inkscape:zoom="0.675"
|
49
|
+
inkscape:cx="147.45395"
|
50
|
+
inkscape:cy="85.501527"
|
51
|
+
inkscape:window-x="65"
|
52
|
+
inkscape:window-y="24"
|
53
|
+
inkscape:window-maximized="1"
|
54
|
+
inkscape:current-layer="svg2"
|
55
|
+
fit-margin-top="0"
|
56
|
+
fit-margin-left="0"
|
57
|
+
fit-margin-right="0"
|
58
|
+
fit-margin-bottom="0" />
|
59
|
+
<path
|
60
|
+
style="fill:#776968;fill-opacity:1;stroke:#827372;stroke-width:2.52960968px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
61
|
+
d="m 46.516505,259.6907 c 0,0 23.890774,26.70145 31.385906,38.41261 7.495158,11.71115 13.116508,32.32277 26.701449,31.85433 13.58494,-0.46845 44.03396,-1.40535 44.03396,-1.40535 0,0 45.90771,-35.6019 52.46598,-43.56549 6.55824,-7.96359 21.5485,-14.99027 31.85433,-58.08734 C 243.26394,183.8024 239.98483,25.936011 206.25669,26.872901 172.52856,27.809791 51.669422,34.836491 39.958264,50.295211 28.247107,65.753941 19.815081,164.12765 19.815081,164.12765 l 2.810675,3.27913 c 0,0 6.089809,13.58494 4.216026,21.08007 -1.873784,7.49516 -1.40535,32.3228 -1.40535,32.3228 0,0 19.674749,24.82767 21.080073,38.88105 z"
|
62
|
+
id="path2987"
|
63
|
+
inkscape:connector-curvature="0" />
|
64
|
+
<path
|
65
|
+
style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.52960968px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:0"
|
66
|
+
d="m 297.13528,106.97721 c 0,0 -29.04367,-55.276659 -53.87134,-74.482949 -24.82764,-19.2063 -58.55579,-30.9174596 -91.34702,-30.4490096 -32.79123,0.46844 -61.834893,0 -80.57275,15.4587196 -18.737857,15.45873 -38.412605,9.83738 -55.276655,40.28638 C -0.79655901,88.239361 2.9510073,168.81213 2.9510073,168.81213 c 0,0 14.9902907,69.79849 22.9538837,71.67227 0,0 -0.468459,-13.11651 -0.468459,-36.07036 0,-22.95386 -7.963592,-50.12377 4.216025,-64.17714 12.17959,-14.05339 28.575206,-46.844629 37.944147,-53.402879 9.368916,-6.55825 27.638314,-24.3592 45.439286,-32.79124 17.80096,-8.43203 29.98055,-17.33251 34.19658,-17.80095 4.21602,-0.46845 17.3325,-3.74757 17.3325,-3.74757 0,0 -1.40532,7.02669 -6.08981,10.30581 -4.68445,3.27913 -39.34947,53.40288 -41.69171,65.114029 0,0 34.66504,-49.655299 40.75482,-49.655299 0,0 5.15292,1.40534 -0.46843,9.36893 -5.62135,7.96358 -22.01699,35.601909 -22.95388,47.313069 0,0 -1.40533,11.71116 0.93689,9.36892 0,0 34.19658,-43.097049 37.47571,-49.655299 3.27914,-6.55825 -17.3325,51.529089 -17.3325,51.529089 l 20.61164,-31.854349 1.87378,36.070359 0,15.45873 c 0,0 5.62135,7.49513 10.77427,-2.34222 5.15289,-9.83738 7.49513,-32.79125 7.49513,-32.79125 0,0 2.81067,33.25969 1.40532,37.00725 -1.40532,3.74757 0.46846,31.85434 4.21603,33.25969 3.74756,1.40535 8.90048,-3.27913 14.52183,-3.74756 5.62135,-0.46846 40.2864,48.24995 40.2864,57.15043 0,8.90049 -11.24274,14.52183 -9.83739,26.70146 1.40533,12.17959 3.27914,29.5121 3.74757,31.38588 0.46846,1.87378 0,18.73786 3.74757,22.01699 3.74757,3.27911 24.82767,29.5121 29.51213,-20.61164 4.68446,-50.12377 2.81067,-89.9417 2.81067,-89.9417 z"
|
67
|
+
id="path3769"
|
68
|
+
inkscape:connector-curvature="0" />
|
69
|
+
<path
|
70
|
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.52960968px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
71
|
+
d="m 221.71541,181.46018 c 0,0 -16.86405,19.67472 -20.14318,25.76453 -3.27913,6.08981 -5.15292,-18.2694 -5.15292,-18.2694 0,0 0,-21.54853 0.46846,-23.89077 0.46843,-2.34222 -2.34224,-52.46597 -2.34224,-52.46597 l -16.86405,38.4126 1.87378,-58.087349 -24.3592,42.160169 15.92715,-55.745109 -37.00725,46.844629 c 0,0 16.39564,-51.529089 21.54853,-57.618889 0,0 -6.08978,-8.90048 -37.00726,41.223269 0,0 -6.08978,6.0898 -4.68445,3.27912 1.40535,-2.81067 36.53882,-65.114029 36.53882,-65.114029 l 3.27911,-10.77426 c 0,0 -69.330058,21.08008 -89.941672,52.93443 -20.611641,31.854339 -38.412606,66.050929 -38.412606,66.050929 0,0 -2.342217,14.52183 -0.468434,19.20629 1.873784,4.68446 -0.936892,49.18685 -0.936892,49.18685 0,0 -14.9902908,-15.45873 -17.8009656,-22.95386 -2.8106747,-7.49513 -6.55824097,-54.80822 -4.2160247,-59.49268 2.3422416,-4.68446 -1.40532469,-59.961119 4.6844579,-63.240239 0,0 19.2063174,-55.27666 61.8349214,-61.83491 42.628605,-6.55825 112.427095,-8.9004796 125.543605,-2.34223 13.11648,6.55825 66.98781,32.79124 75.41984,52.46598 8.43205,19.67474 -20.61162,120.390679 -20.61162,120.390679 z"
|
72
|
+
id="path3791"
|
73
|
+
inkscape:connector-curvature="0"
|
74
|
+
sodipodi:nodetypes="cscsccccccccsccscscsscssscc" />
|
75
|
+
<path
|
76
|
+
style="fill:none;stroke:#8b8b8b;stroke-width:7.58882952;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
77
|
+
d="m 292.8225,212.03105 c 0,0 1.65621,28.15551 -26.16808,44.05511 -27.8243,15.89961 -38.42403,14.90588 -38.42403,14.90588"
|
78
|
+
id="path3787"
|
79
|
+
inkscape:connector-curvature="0" />
|
80
|
+
<path
|
81
|
+
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:2.52960968px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
82
|
+
d="m 229.55535,269.66708 c 0,0 -24.84312,7.61855 -30.14298,6.29359 -5.29986,-1.32498 -16.56206,1.98744 -15.56836,5.96234 0.99374,3.9749 0.99374,8.94351 7.28733,8.28103 6.29359,-0.66248 18.21827,-4.63738 22.85566,-7.2873 4.63738,-2.64994 8.28103,-3.9749 12.91841,-5.29988 4.63738,-1.32496 2.64994,-7.94978 2.64994,-7.94978 z"
|
83
|
+
id="path3789"
|
84
|
+
inkscape:connector-curvature="0"
|
85
|
+
sodipodi:nodetypes="csssssc" />
|
86
|
+
<path
|
87
|
+
style="fill:#282828;fill-opacity:1;stroke:#242424;stroke-width:2.52960968px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
88
|
+
d="m 270.96055,105.37126 c 0,0 -1.65622,-21.530699 -20.86823,-40.080219 -19.21201,-18.54953 -50.01747,-50.67995 -83.14162,-51.67368 -33.12415,-0.99373 -79.166722,-1.65621 -85.791543,1.98745 l -7.949804,0 c 0,0 29.811727,-20.8682196 102.022407,-12.2559396 72.21064,8.6122796 121.23439,99.3724586 121.89687,103.0161186 5.63108,1.32497 12.25593,25.5056 20.20573,40.41146 7.94981,14.90587 -4.9686,34.11788 -9.93724,49.35499 -4.96863,15.2371 -18.21827,17.22456 -22.52443,19.87448 -4.30613,2.64995 -13.58089,-1.32496 -13.58089,0.33126 0,1.65621 -4.96864,5.29986 -6.2936,6.29359 -1.32495,0.99373 -12.58719,9.27476 -18.54953,9.27476 -5.96234,0 -21.5307,-8.28103 -25.17435,-59.62348 -3.64365,-51.34244 21.19945,-66.2483 24.84312,-66.91079 3.64365,-0.66248 24.84311,0 24.84311,0 z"
|
89
|
+
id="path3775"
|
90
|
+
inkscape:connector-curvature="0" />
|
91
|
+
<g
|
92
|
+
transform="matrix(2.5296098,0,0,2.5296098,-575.6928,-113.50023)"
|
93
|
+
style="font-size:8px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
94
|
+
id="flowRoot3793">
|
95
|
+
<path
|
96
|
+
d="m 241.59863,183.97695 0,7.93652 1.66797,0 c 1.4082,0 2.43815,-0.31901 3.08985,-0.95703 0.65624,-0.63802 0.98436,-1.64518 0.98437,-3.02148 -1e-5,-1.36718 -0.32813,-2.36751 -0.98437,-3.00098 -0.6517,-0.63801 -1.68165,-0.95702 -3.08985,-0.95703 l -1.66797,0 m -1.38086,-1.13477 2.83692,0 c 1.97786,10e-6 3.42935,0.41245 4.35449,1.23731 0.92512,0.82032 1.38769,2.10547 1.38769,3.85547 0,1.75911 -0.46485,3.05111 -1.39453,3.87597 -0.92969,0.82487 -2.37891,1.23731 -4.34765,1.23731 l -2.83692,0 0,-10.20606"
|
97
|
+
style="font-size:14px"
|
98
|
+
id="path3813"
|
99
|
+
inkscape:connector-curvature="0" />
|
100
|
+
<path
|
101
|
+
d="m 253.90332,186.27382 c -0.67448,1e-5 -1.20769,0.26433 -1.59961,0.79297 -0.39193,0.5241 -0.58789,1.24415 -0.58789,2.16016 0,0.91602 0.19368,1.63835 0.58105,2.16699 0.39193,0.52409 0.92741,0.78614 1.60645,0.78613 0.66992,1e-5 1.20084,-0.26432 1.59277,-0.79296 0.39192,-0.52865 0.58789,-1.2487 0.58789,-2.16016 0,-0.9069 -0.19597,-1.62467 -0.58789,-2.15332 -0.39193,-0.5332 -0.92285,-0.7998 -1.59277,-0.79981 m 0,-1.0664 c 1.09374,10e-6 1.95279,0.35547 2.57715,1.0664 0.62434,0.71095 0.93651,1.69532 0.93652,2.95313 -10e-6,1.25326 -0.31218,2.23763 -0.93652,2.95312 -0.62436,0.71094 -1.48341,1.06641 -2.57715,1.06641 -1.09831,0 -1.95964,-0.35547 -2.58398,-1.06641 -0.6198,-0.71549 -0.92969,-1.69986 -0.92969,-2.95312 0,-1.25781 0.30989,-2.24218 0.92969,-2.95313 0.62434,-0.71093 1.48567,-1.06639 2.58398,-1.0664"
|
102
|
+
style="font-size:14px"
|
103
|
+
id="path3815"
|
104
|
+
inkscape:connector-curvature="0" />
|
105
|
+
<path
|
106
|
+
d="m 259.36523,190.02675 0,-4.63476 1.25782,0 0,4.58691 c -10e-6,0.72461 0.14127,1.26921 0.42382,1.63379 0.28255,0.36003 0.70638,0.54004 1.27149,0.54004 0.67903,0 1.21451,-0.21647 1.60644,-0.64941 0.39648,-0.43294 0.59472,-1.02311 0.59473,-1.77051 l 0,-4.34082 1.25781,0 0,7.65625 -1.25781,0 0,-1.17578 c -0.30534,0.46484 -0.66081,0.8112 -1.06641,1.03906 -0.40104,0.22331 -0.86816,0.33496 -1.40136,0.33496 -0.87956,0 -1.54721,-0.27344 -2.00293,-0.82031 -0.45573,-0.54688 -0.6836,-1.34668 -0.6836,-2.39942 m 3.16504,-4.81933 0,0"
|
107
|
+
style="font-size:14px"
|
108
|
+
id="path3817"
|
109
|
+
inkscape:connector-curvature="0" />
|
110
|
+
<path
|
111
|
+
d="m 273.87793,189.22695 c -10e-6,-0.92513 -0.19141,-1.64973 -0.57422,-2.17383 -0.37826,-0.52864 -0.90007,-0.79296 -1.56543,-0.79297 -0.66537,1e-5 -1.18946,0.26433 -1.57226,0.79297 -0.37826,0.5241 -0.56739,1.2487 -0.56739,2.17383 0,0.92513 0.18913,1.65202 0.56739,2.18066 0.3828,0.52409 0.90689,0.78614 1.57226,0.78614 0.66536,0 1.18717,-0.26205 1.56543,-0.78614 0.38281,-0.52864 0.57421,-1.25553 0.57422,-2.18066 m -4.2793,-2.67285 c 0.26432,-0.45572 0.597,-0.79296 0.99805,-1.01172 0.40559,-0.2233 0.88867,-0.33495 1.44922,-0.33496 0.92968,10e-6 1.68391,0.36915 2.26269,1.10742 0.58333,0.73829 0.875,1.70899 0.875,2.91211 0,1.20313 -0.29167,2.17383 -0.875,2.91211 -0.57878,0.73828 -1.33301,1.10742 -2.26269,1.10742 -0.56055,0 -1.04363,-0.10937 -1.44922,-0.32812 -0.40105,-0.22331 -0.73373,-0.56283 -0.99805,-1.01856 l 0,1.14844 -1.26465,0 0,-10.63672 1.26465,0 0,4.14258"
|
112
|
+
style="font-size:14px"
|
113
|
+
id="path3819"
|
114
|
+
inkscape:connector-curvature="0" />
|
115
|
+
<path
|
116
|
+
d="m 277.26855,182.41152 1.25782,0 0,10.63672 -1.25782,0 0,-10.63672"
|
117
|
+
style="font-size:14px"
|
118
|
+
id="path3821"
|
119
|
+
inkscape:connector-curvature="0" />
|
120
|
+
<path
|
121
|
+
d="m 287.7002,188.90566 0,0.61523 -5.78321,0 c 0.0547,0.86589 0.31445,1.5267 0.7793,1.98243 0.4694,0.45117 1.12109,0.67676 1.95508,0.67675 0.48306,1e-5 0.95019,-0.0592 1.40136,-0.17773 0.45573,-0.11849 0.9069,-0.29622 1.35352,-0.5332 l 0,1.18945 c -0.45118,0.19141 -0.91374,0.33724 -1.3877,0.4375 -0.47396,0.10026 -0.95475,0.15039 -1.44238,0.15039 -1.22136,0 -2.18978,-0.35547 -2.90527,-1.06641 -0.71094,-0.71093 -1.06641,-1.67252 -1.06641,-2.88476 0,-1.25325 0.33724,-2.24674 1.01172,-2.98047 0.67903,-0.73827 1.59277,-1.10741 2.74121,-1.10742 1.02994,10e-6 1.84342,0.33269 2.44043,0.99804 0.60156,0.66082 0.90234,1.56088 0.90235,2.7002 m -1.25782,-0.36914 c -0.009,-0.68815 -0.2028,-1.2373 -0.58105,-1.64746 -0.37371,-0.41015 -0.87045,-0.61523 -1.49024,-0.61524 -0.70182,1e-5 -1.26465,0.19825 -1.68847,0.59473 -0.41928,0.39649 -0.66081,0.95476 -0.72461,1.67481 l 4.48437,-0.007"
|
122
|
+
style="font-size:14px"
|
123
|
+
id="path3823"
|
124
|
+
inkscape:connector-curvature="0" />
|
125
|
+
<path
|
126
|
+
d="m 294.64551,185.61757 0,1.18946 c -0.35548,-0.18229 -0.72462,-0.31901 -1.10742,-0.41016 -0.38282,-0.0911 -0.77931,-0.13671 -1.18946,-0.13672 -0.62435,1e-5 -1.09375,0.0957 -1.4082,0.28711 -0.3099,0.19141 -0.46485,0.47852 -0.46484,0.86133 -1e-5,0.29167 0.11165,0.52181 0.33496,0.69043 0.2233,0.16407 0.67219,0.32129 1.34668,0.47168 l 0.43066,0.0957 c 0.89322,0.19141 1.52669,0.46257 1.90039,0.81348 0.37825,0.34636 0.56738,0.83171 0.56738,1.45605 0,0.71094 -0.28255,1.27377 -0.84765,1.68848 -0.56055,0.41471 -1.33301,0.62207 -2.31739,0.62207 -0.41015,0 -0.83854,-0.041 -1.28515,-0.12305 -0.44206,-0.0775 -0.90918,-0.19596 -1.40137,-0.35547 l 0,-1.29882 c 0.46484,0.24153 0.92285,0.42383 1.37402,0.54687 0.45117,0.11849 0.89779,0.17774 1.33985,0.17774 0.59244,0 1.04817,-0.10026 1.36719,-0.30079 0.319,-0.20507 0.47851,-0.49218 0.47851,-0.86132 0,-0.3418 -0.11621,-0.60384 -0.34863,-0.78614 -0.22787,-0.18228 -0.73145,-0.35774 -1.51074,-0.52636 l -0.4375,-0.10254 c -0.7793,-0.16406 -1.34213,-0.41471 -1.68848,-0.75196 -0.34635,-0.34179 -0.51953,-0.80891 -0.51953,-1.40136 0,-0.72005 0.25521,-1.27604 0.76562,-1.66797 0.51042,-0.39192 1.23503,-0.58788 2.17383,-0.58789 0.46484,10e-6 0.90234,0.0342 1.3125,0.10254 0.41015,0.0684 0.78841,0.1709 1.13477,0.30761"
|
127
|
+
style="font-size:14px"
|
128
|
+
id="path3825"
|
129
|
+
inkscape:connector-curvature="0" />
|
130
|
+
<path
|
131
|
+
d="m 297.06543,185.39199 1.25781,0 0,7.65625 -1.25781,0 0,-7.65625 m 0,-2.98047 1.25781,0 0,1.59277 -1.25781,0 0,-1.59277"
|
132
|
+
style="font-size:14px"
|
133
|
+
id="path3827"
|
134
|
+
inkscape:connector-curvature="0" />
|
135
|
+
<path
|
136
|
+
d="m 307.3125,188.42714 0,4.6211 -1.25781,0 0,-4.58008 c -10e-6,-0.7246 -0.14128,-1.26692 -0.42383,-1.62695 -0.28256,-0.36002 -0.70639,-0.54004 -1.27149,-0.54004 -0.67904,0 -1.21452,0.21648 -1.60644,0.64941 -0.39193,0.43295 -0.58789,1.02312 -0.58789,1.77051 l 0,4.32715 -1.26465,0 0,-7.65625 1.26465,0 0,1.18945 c 0.30078,-0.46028 0.65397,-0.80435 1.05957,-1.03223 0.41015,-0.22785 0.88183,-0.34178 1.41504,-0.34179 0.87955,10e-6 1.54491,0.27344 1.99609,0.82031 0.45117,0.54232 0.67675,1.34213 0.67676,2.39941"
|
137
|
+
style="font-size:14px"
|
138
|
+
id="path3829"
|
139
|
+
inkscape:connector-curvature="0" />
|
140
|
+
<path
|
141
|
+
d="m 314.87305,189.13125 c -10e-6,-0.91146 -0.18914,-1.61784 -0.56739,-2.11914 -0.3737,-0.5013 -0.90007,-0.75195 -1.5791,-0.75196 -0.67448,1e-5 -1.20085,0.25066 -1.5791,0.75196 -0.3737,0.5013 -0.56055,1.20768 -0.56055,2.11914 0,0.9069 0.18685,1.611 0.56055,2.1123 0.37825,0.5013 0.90462,0.75195 1.5791,0.75195 0.67903,0 1.2054,-0.25065 1.5791,-0.75195 0.37825,-0.5013 0.56738,-1.2054 0.56739,-2.1123 m 1.25781,2.96679 c -10e-6,1.30339 -0.2894,2.27181 -0.86816,2.90528 -0.57879,0.63801 -1.46518,0.95702 -2.65918,0.95703 -0.44207,-1e-5 -0.85906,-0.0342 -1.25098,-0.10254 -0.39193,-0.0638 -0.77246,-0.16407 -1.1416,-0.30078 l 0,-1.22364 c 0.36914,0.20052 0.73372,0.34864 1.09375,0.44434 0.36002,0.0957 0.72688,0.14355 1.10058,0.14356 0.82487,-1e-5 1.44238,-0.21648 1.85254,-0.64942 0.41015,-0.42839 0.61523,-1.0778 0.61524,-1.94824 l 0,-0.62207 c -0.25977,0.45117 -0.59246,0.78841 -0.99805,1.01172 -0.4056,0.2233 -0.89095,0.33496 -1.45605,0.33496 -0.93881,0 -1.69532,-0.35775 -2.26954,-1.07324 -0.57422,-0.7155 -0.86132,-1.66341 -0.86132,-2.84375 0,-1.18489 0.2871,-2.13509 0.86132,-2.85059 0.57422,-0.71549 1.33073,-1.07323 2.26954,-1.07324 0.5651,10e-6 1.05045,0.11166 1.45605,0.33496 0.40559,0.22331 0.73828,0.56055 0.99805,1.01172 l 0,-1.16211 1.25781,0 0,6.70605"
|
142
|
+
style="font-size:14px"
|
143
|
+
id="path3831"
|
144
|
+
inkscape:connector-curvature="0" />
|
145
|
+
</g>
|
146
|
+
</svg>
|
data/bin/console
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "doublesing"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
text = "test \\block{nesting \\now{woo}{arity}}"
|
9
|
+
|
10
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
11
|
+
require "pry"
|
12
|
+
Pry.start
|
13
|
+
|
data/bin/setup
ADDED
data/doublesing.gemspec
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'doublesing/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "doublesing"
|
8
|
+
spec.version = Doublesing::VERSION
|
9
|
+
spec.authors = ["Anthony Super"]
|
10
|
+
spec.email = ["anthony@noided.media"]
|
11
|
+
spec.summary = %q{An extensible markup language}
|
12
|
+
spec.homepage = "http://www.github.com/AnthonySuper/Doublesing"
|
13
|
+
spec.license = "MIT"
|
14
|
+
|
15
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
16
|
+
spec.bindir = "exe"
|
17
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
18
|
+
spec.require_paths = ["lib"]
|
19
|
+
|
20
|
+
spec.add_development_dependency "bundler", ">= 1.7"
|
21
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
22
|
+
spec.add_development_dependency "rspec"
|
23
|
+
spec.add_development_dependency "pry"
|
24
|
+
spec.add_development_dependency "simplecov"
|
25
|
+
spec.add_development_dependency "codeclimate-test-reporter"
|
26
|
+
spec.add_runtime_dependency "sanitize-url"
|
27
|
+
spec.add_runtime_dependency "sanitize"
|
28
|
+
spec.add_runtime_dependency "parslet"
|
29
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module Doublesing
|
2
|
+
module Builtins
|
3
|
+
class Header
|
4
|
+
def initialize(a)
|
5
|
+
@level = a[0].to_i
|
6
|
+
@body = a[1].to_s
|
7
|
+
end
|
8
|
+
def to_s
|
9
|
+
if @level && @level > 0
|
10
|
+
"<h#{@level}>#{@body}</h#{@level}>"
|
11
|
+
else
|
12
|
+
"<h1>#{@body}</h1>"
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require 'uri'
|
2
|
+
require 'sanitize-url'
|
3
|
+
include SanitizeUrl
|
4
|
+
|
5
|
+
module Doublesing
|
6
|
+
module Builtins
|
7
|
+
class Link
|
8
|
+
def initialize(args)
|
9
|
+
@url = args.first.to_s
|
10
|
+
@body = args.last.to_s
|
11
|
+
end
|
12
|
+
|
13
|
+
def to_s
|
14
|
+
if @url =~ URI::regexp && ! sanitize_url(@url).empty?
|
15
|
+
"<a href=\"#{@url}\">#{@body}</a>"
|
16
|
+
else
|
17
|
+
@body
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'parslet'
|
2
|
+
module Doublesing
|
3
|
+
class Parser < Parslet::Parser
|
4
|
+
rule(:argument_begin){ str("{") }
|
5
|
+
rule(:argument_end){ str("\\}").absent? >> str("}")}
|
6
|
+
rule(:block_begin){ str("\\\\").absent? >> str("\\")}
|
7
|
+
rule(:block_id){ match["\\w"].repeat(1)}
|
8
|
+
rule(:block_header){ block_begin >> block_id.as(:id)}
|
9
|
+
rule(:text){ (block_header.absent? >> argument_end.absent? >> any).repeat(1).as(:text)}
|
10
|
+
rule(:block){ block_header >> (argument_begin >> body.as(:body) >> argument_end).repeat.as(:argument)}
|
11
|
+
rule(:expr) {text | block}
|
12
|
+
rule(:body) {expr.repeat(1)}
|
13
|
+
rule(:document){expr.repeat(1)}
|
14
|
+
root(:document)
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'parslet'
|
2
|
+
module Doublesing
|
3
|
+
class Transformer < Parslet::Transform
|
4
|
+
rule(text: simple(:text)){text}
|
5
|
+
rule(body: sequence(:body)){body.join("")}
|
6
|
+
rule(id: simple(:id),
|
7
|
+
argument: sequence(:argument)){Doublesing.process(id, argument)}
|
8
|
+
end
|
9
|
+
end
|
10
|
+
|
data/lib/doublesing.rb
ADDED
@@ -0,0 +1,35 @@
|
|
1
|
+
require "doublesing/version"
|
2
|
+
require "doublesing/parser"
|
3
|
+
require "doublesing/transformer"
|
4
|
+
require "doublesing/builtins"
|
5
|
+
require "sanitize"
|
6
|
+
|
7
|
+
require "pp"
|
8
|
+
module Doublesing
|
9
|
+
def self.parse(str)
|
10
|
+
sanitized = Sanitize.fragment(str)
|
11
|
+
tree = Parser.new.parse(sanitized)
|
12
|
+
res = Transformer.new.apply(tree)
|
13
|
+
res.join("")
|
14
|
+
end
|
15
|
+
##
|
16
|
+
# Assign a handler for a custom block class.
|
17
|
+
# +name+: Name the block should respond to
|
18
|
+
# +klass+: class the block should be generated from
|
19
|
+
# Note:
|
20
|
+
def self.assign(name, klass)
|
21
|
+
@@handlers[name] = klass
|
22
|
+
end
|
23
|
+
|
24
|
+
def self.process(id, args)
|
25
|
+
if handler = @@handlers[id.to_s]
|
26
|
+
handler.new(args).to_s
|
27
|
+
else
|
28
|
+
""
|
29
|
+
end
|
30
|
+
end
|
31
|
+
def self.setup!
|
32
|
+
@@handlers = {}
|
33
|
+
@@handlers.merge! Builtins.handlers
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
\subsection{Whitespace}
|
2
|
+
Whitespace is ignored in Doublesing, expect for one character: the blank newline.
|
3
|
+
A blank newline is a single line, by itself. As C printf escape sequences, it is:
|
4
|
+
\begin{verbatim}
|
5
|
+
\n\r\n\r
|
6
|
+
\end{verbatim}
|
7
|
+
|
8
|
+
This will cause a new \begin{verbatim}<p>\end{verbatim} tag to be inserted inside of direct-display blocks.
|
9
|
+
|
10
|
+
\subsection{Blocks}
|
11
|
+
A block is defined by an identifier and one or more arguments, which should be text surrounded by the characters "\{" and "\}".
|
12
|
+
A valid block identifier can be matched by the regex:
|
13
|
+
\begin{verbatim}
|
14
|
+
/[a-zA-Z0-9_].+/
|
15
|
+
\end{verbatim}
|
16
|
+
|
17
|
+
By convention, all the built-in block types use lowercase names, with words separated by underscores.
|
18
|
+
Vendors are encouraged (but not required) to use the same convention.
|
19
|
+
|
20
|
+
\subsection{Arguments}
|
21
|
+
Arguments to blocks are evaluated at the deepest level first, then expand outwards through the tree.
|
22
|
+
|
23
|
+
As an example:
|
24
|
+
|
25
|
+
\begin{verbatim}
|
26
|
+
\link{www.imagehex.com}{\bold{Free} advertising for the author!}
|
27
|
+
\end{verbatim}
|
28
|
+
|
29
|
+
Becomes:
|
30
|
+
\begin{verbatim}
|
31
|
+
\link{www.imagehex.com}{<b>free</b> advertising for the author!}
|
32
|
+
\end{verbatim}
|
33
|
+
Which then becomes:
|
34
|
+
\begin{verbatim}
|
35
|
+
<a href="wwww.imagehex.com"><b>free</b> advertising for the author!</a>
|
36
|
+
\end{verbatim}
|
37
|
+
|
38
|
+
|
data/tex/inline/bold.tex
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
\subsection{Header}
|
2
|
+
|
3
|
+
The \begin{verbatim}header\end{verbatim} tag creates a new html heading.
|
4
|
+
|
5
|
+
It accepts two arguments:
|
6
|
+
\begin{enumerate}
|
7
|
+
\item the header depth
|
8
|
+
\item the header body
|
9
|
+
\end{enumerate}
|
10
|
+
|
11
|
+
If the header depth is not a valid integer, it will default to 1.
|
12
|
+
|
13
|
+
Thus, this:
|
14
|
+
|
15
|
+
\begin{verbatim}
|
16
|
+
\header{1}{this is a header}
|
17
|
+
\end{verbatim}
|
18
|
+
|
19
|
+
becomes:
|
20
|
+
\begin{verbatim}
|
21
|
+
<h1>this is a header</h1>
|
22
|
+
\end{verbatim}
|
data/tex/spec.tex
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
\documentclass{article}
|
2
|
+
|
3
|
+
\begin{document}
|
4
|
+
\title{The Doublesing Markup Language}
|
5
|
+
\author{Anthony Super}
|
6
|
+
\maketitle
|
7
|
+
\begin{abstract}
|
8
|
+
The Doublesing Markup Language is a \LaTeX-like language designed for wiki markup.
|
9
|
+
This document defines universal features, although websites are free to add their own extensions.
|
10
|
+
\end{abstract}
|
11
|
+
\section{General Rules}
|
12
|
+
\input{./tex/general/main}
|
13
|
+
\section{Inline Elements (Arity 1)}
|
14
|
+
\input{./tex/inline/bold}
|
15
|
+
\input{./tex/inline/italic}
|
16
|
+
\section{Inline Elements (Arity 2)}
|
17
|
+
\input{./tex/inline-2/header}
|
18
|
+
\end{document}
|
metadata
ADDED
@@ -0,0 +1,198 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: doublesing
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Anthony Super
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-02-28 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.7'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rspec
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: pry
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: simplecov
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: codeclimate-test-reporter
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sanitize-url
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :runtime
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: sanitize
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :runtime
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: parslet
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
description:
|
140
|
+
email:
|
141
|
+
- anthony@noided.media
|
142
|
+
executables: []
|
143
|
+
extensions: []
|
144
|
+
extra_rdoc_files: []
|
145
|
+
files:
|
146
|
+
- ".gitignore"
|
147
|
+
- ".rspec"
|
148
|
+
- ".travis.yml"
|
149
|
+
- CODE_OF_CONDUCT.md
|
150
|
+
- Gemfile
|
151
|
+
- LICENSE.txt
|
152
|
+
- README.md
|
153
|
+
- Rakefile
|
154
|
+
- assets/logo-opt.svg
|
155
|
+
- assets/logo.svg
|
156
|
+
- bin/console
|
157
|
+
- bin/setup
|
158
|
+
- doublesing.gemspec
|
159
|
+
- lib/doublesing.rb
|
160
|
+
- lib/doublesing/builtins.rb
|
161
|
+
- lib/doublesing/builtins/bold.rb
|
162
|
+
- lib/doublesing/builtins/header.rb
|
163
|
+
- lib/doublesing/builtins/italic.rb
|
164
|
+
- lib/doublesing/builtins/link.rb
|
165
|
+
- lib/doublesing/parser.rb
|
166
|
+
- lib/doublesing/transformer.rb
|
167
|
+
- lib/doublesing/version.rb
|
168
|
+
- tex/general/main.tex
|
169
|
+
- tex/inline-2/header.tex
|
170
|
+
- tex/inline/bold.tex
|
171
|
+
- tex/inline/italic.tex
|
172
|
+
- tex/spec.tex
|
173
|
+
homepage: http://www.github.com/AnthonySuper/Doublesing
|
174
|
+
licenses:
|
175
|
+
- MIT
|
176
|
+
metadata: {}
|
177
|
+
post_install_message:
|
178
|
+
rdoc_options: []
|
179
|
+
require_paths:
|
180
|
+
- lib
|
181
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
+
requirements:
|
183
|
+
- - ">="
|
184
|
+
- !ruby/object:Gem::Version
|
185
|
+
version: '0'
|
186
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
187
|
+
requirements:
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: '0'
|
191
|
+
requirements: []
|
192
|
+
rubyforge_project:
|
193
|
+
rubygems_version: 2.2.2
|
194
|
+
signing_key:
|
195
|
+
specification_version: 4
|
196
|
+
summary: An extensible markup language
|
197
|
+
test_files: []
|
198
|
+
has_rdoc:
|