opulent 1.1.6 → 1.1.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b6daf567113902547514da9b31c194ca45587239
4
- data.tar.gz: 21ed11e388a2cdf395adadc22b22599ff034c30d
3
+ metadata.gz: e4e6711a377fd5f4bdb35c0d1acb44a542e2ad86
4
+ data.tar.gz: 2df71d3a64fb210a6b0853285fff5d82e4a7363c
5
5
  SHA512:
6
- metadata.gz: aa4b1110a6588609be2b67b1cbeffd7331cade6abcacac05935fbddf5aa7996fed7b115f5da47b3c7e501e2a05b31f303445ac0e9b401f996a033ee914a26775
7
- data.tar.gz: 57a2e9efab145024e4b7ff18109d2a244e15ab3677b679ed4937e68caa2db9b66effc68faed0e667e4c7d8e564a5989aef10cb8c1f9600751f56bc918c5e5325
6
+ metadata.gz: 20aa32c2d2edf206eef8eafaff65255fe0039ad10cfdaa92af9be2fdd890d1d91c99dd38b46780c28e8ba86cb76bd0c0207b6a06388fb1ee925dc5149eedd2d7
7
+ data.tar.gz: a4a00b6cb4be54cb77a56aba84978e8a3e196b299c8bab178c721770ec508297476f97d98742942aa4a1965c870826ab7db44dc5add25549f4e031d7ef7d5890
data/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2015 Pixevil
3
+ Copyright (c) 2015 Alex Grozav (Pixevil)
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Opulent
2
2
 
3
- Opulent is an __Intelligent Web Templating Engine__ created for extremly fast, efficient and DRY Web Development. Based on the idea of creating lightweight __Web Component__ definitions, Opulent greatly speeds up the development process of any project.
3
+ Opulent is an __Intelligent Web Templating Engine__ created for extremely fast and efficient Web Development. Based on the idea of lightweight and reusable __Web Components__, Opulent greatly increases your development speed for any project.
4
4
 
5
5
  ## Syntax
6
6
 
7
- Opulent is as beautiful as it gets: no tags, indentation based, optional brackets, inline text, inline children and in page definitions.
7
+ Opulent has a beautiful, minimalistic syntax: no tags, indentation based, optional brackets, inline text, inline children and in page definitions.
8
8
 
9
9
  __Page Markup__
10
10
  ```
@@ -40,7 +40,7 @@ ul.navbar
40
40
 
41
41
  __Starting to feel it?__ There's so much more you can do with Opulent.
42
42
 
43
- [Read the Documentation](docs/syntax.md)
43
+ [Read the Documentation](docs/reference.md)
44
44
 
45
45
 
46
46
 
@@ -0,0 +1,164 @@
1
+ # Opulent Attributes
2
+ Tag attributes are similar to CSS or HTML, but their values are regular embedded Ruby.
3
+
4
+ ### Shorthand Attributes
5
+ You can use the shorthand attributes exactly as you would in your CSS markup, the syntax is very similar.
6
+
7
+ The default node for the shorthand attributes is the __div__ node, since it's the most widely used HTML Element.
8
+
9
+ __Example__
10
+ ```scss
11
+ .container.text-center
12
+
13
+ #content
14
+
15
+ #main.center
16
+
17
+ div#block.new
18
+
19
+ input&email
20
+ ```
21
+
22
+ ```html
23
+ <div class="container text-center"></div>
24
+
25
+ <div id="content"></div>
26
+
27
+ <div id="main" class="center"></div>
28
+
29
+ <div id="block" class="new"></div>
30
+
31
+ <input name="email">
32
+ ```
33
+
34
+
35
+ ### Wrapped Attributes
36
+ You can either use equals symbol '__=__' or colon symbol '__:__' to set a value for an attribute.
37
+
38
+ The difference between wrapped and unwrapped (inline) attributes is that you can use complex Ruby expressions such as boolean operations, comparisons or ternary operators.
39
+
40
+ The attributes in wrapped mode are separated by a comma '__,__' or semicolon '__;__'.
41
+
42
+ The node's __class__ attribute values are gathered into an array, while the other attributes will be replaced.
43
+
44
+ Attributes can be wrapped in round __(exp)__, square __[exp]__ and curly __{exp}__ brackets.
45
+
46
+ __Example 1__
47
+ ```html
48
+ a(href="http://google.com") Google
49
+ a(href: "http://google.com") Google
50
+
51
+ a[href="http://google.com"] Google
52
+ a[href: "http://google.com"] Google
53
+
54
+ a{href="http://google.com"} Google
55
+ a{href: "http://google.com"} Google
56
+ ```
57
+
58
+ ```html
59
+ <a href="http://google.com">Google</a>
60
+ ```
61
+
62
+ __Example 2__
63
+
64
+ ```html
65
+ div(class: "HELLO".downcase, class: "world")
66
+ ```
67
+
68
+ ```html
69
+ <div class="hello world"></div>
70
+ ```
71
+
72
+ __Example 3__
73
+ ```html
74
+ a(class=["btn", "btn-primary"])
75
+ ```
76
+
77
+ ```html
78
+ <a class="btn btn-primary"></a>
79
+ ```
80
+
81
+ __Example 4__
82
+ ```html
83
+ example(attr1=1 + 2 + 3, attr2="hello " + "world")
84
+ ```
85
+
86
+ ```html
87
+ <example attr1="6" attr2="hello world"></example>
88
+ ```
89
+
90
+ ### Unwrapped Attributes
91
+ Inline attributes can be used without any wrapping brackets and they allow you to use simple expressions such as method calls and index accessors.
92
+
93
+ __Example 1__
94
+ ```html
95
+ a href="http://google.com" Google
96
+
97
+ a href="http://google.com" class="button" Google
98
+ ```
99
+
100
+ ```
101
+ <a href="http://google.com">Google</a>
102
+
103
+ <a href="http://google.com" class="button">Google</a>
104
+ ```
105
+
106
+ __Example 2__
107
+ ```html
108
+ a class=["btn", "btn-primary"] Button
109
+ ```
110
+
111
+ ```html
112
+ <a class="btn btn-primary">Button</a>
113
+ ```
114
+
115
+ ### Escaping Attributes
116
+ Attributes are escaped by default, unless passed as node definition arguments.
117
+
118
+ You can use a tilde symbol '__~__' after the assignment operator to explicitly set the attribute value as unescaped.
119
+
120
+ __Example__
121
+ ```html
122
+ div escaped="<div></div>"
123
+ div unescaped=~"<div></div>"
124
+ ```
125
+
126
+ ```html
127
+ <div escaped="&lt;div&gt;&lt;/div&gt;"></div>
128
+ <div unescaped="<div></div>"></div>
129
+ ```
130
+
131
+ Unescaped buffered code can be dangerous. You must be sure to sanitize any user inputs to avoid cross-site scripting.
132
+
133
+ ### Extending Attributes
134
+ Attributes can be extended using a '__+__' symbol, followed by an expression which returns a Hash.
135
+
136
+ __Example__
137
+ ```html
138
+ a+({href: "http://opulent.io", class: "btn btn-black"}) Opulent
139
+ ```
140
+ ```html
141
+ <a href="http://opulent.io" class="btn btn-black">Opulent</a>
142
+ ```
143
+
144
+
145
+ ### Literal Values
146
+ In Opulent, boolean values, arrays and hashes behave differently based on the use context. Arrays will join values using a space when used for class attributes and an underline otherwise. Hashes will extend the current attribute name one level using the hash key.
147
+
148
+ __Example 1__
149
+ ```html
150
+ - hash = {a: 1, b: 2, c: 3}
151
+ div data=hash
152
+ ```
153
+
154
+ ```html
155
+ <div data-a="1" data-b="2" data-c="3"></div>
156
+ ```
157
+
158
+ ```html
159
+ - array = ['a', 'b', 'c']
160
+ div data=array class=array
161
+ ```
162
+ ```html
163
+ <div data="a_b_c" class="a b c"></div>
164
+ ```
@@ -0,0 +1,91 @@
1
+ # Opulent Control Structures
2
+
3
+ You can use your favorite control structures from Ruby in Opulent without any hassle. Unlike in most templating engines, control structures do not require a leading dash and can be written like you normally write a node.
4
+
5
+ ### If Structure
6
+ Just like in Ruby, you can use the __if-elsif-else__ structure to write conditional branches. The values false and nil are false, and everything else are true. Notice Ruby and Opulent use elsif, not else if nor elif.
7
+
8
+ __Example__
9
+ ```html
10
+ if user.authenticated?
11
+ p Welcome #{user.name}
12
+ else
13
+ p Welcome stranger!
14
+ ```
15
+
16
+ ### Unless Structure
17
+ The branch is executed if the condition is false. The unless structure also allows an else branch.
18
+
19
+ __Example__
20
+ ```html
21
+ unless value
22
+ p Value doesn't exist
23
+ ```
24
+
25
+ ### Case Structure
26
+ To handle multiple possible values, the case structure is preferred instead of the if-elsif structure.
27
+
28
+ __Example__
29
+ ```html
30
+ - value = 'a'
31
+
32
+ case value
33
+ when 'a'
34
+ p This is a
35
+ when 'b'
36
+ p This is b
37
+ when 'c'
38
+ p This is c
39
+ else
40
+ p This is something else
41
+ ```
42
+
43
+ ### Each Structure
44
+ The each structure will iterate through an ennumerable value such as an Array or Hash and allow you to use
45
+ the value and the current index. By default, the variable names are '__key__' and '__value__' but they can be overwritten.
46
+
47
+ __Example 1__
48
+ ```html
49
+ each in ['a', 'b', 'c']
50
+ p Value at #{key} is #{value}.
51
+ ```
52
+
53
+ ```html
54
+ <p>Value at 0 is a.</p>
55
+ <p>Value at 1 is b.</p>
56
+ <p>Value at 2 is c.</p>
57
+ ```
58
+
59
+ __Example 2__
60
+ ```html
61
+ each myval in ['1', '2', '3']
62
+ p Value at #{key} is #{myval}.
63
+ ```
64
+
65
+ __Example 3__
66
+ ```html
67
+ each k, v in {a: '1', b: '2', c: '3'}
68
+ p Value at #{k} is #{v}.
69
+ ```
70
+
71
+ ### While Structure
72
+ The while structure will loop until we encounter a false value for the conditional. You will need to update the conditional variables inside the while loop in order to eventually reach a false value, otherwise it will result in an infinite loop.
73
+
74
+ __Example__
75
+ ```html
76
+ - timer = 10
77
+ while timer > 0
78
+ p Time remaining: #{timer}
79
+ - timer -= 1
80
+ ```
81
+
82
+ ### Until Structure
83
+ The until structure will loop until we encounter a true value for the conditional.
84
+
85
+ __Example__
86
+ ```html
87
+ - timer = 10
88
+ until timer == 0
89
+ p Time left: #{timer}
90
+ - timer -= 1
91
+ ```
data/docs/reference.md ADDED
@@ -0,0 +1,9 @@
1
+ #Opulent
2
+ Opulent is an __Intelligent Web Templating Engine__ created for extremely fast and efficient Web Development. Based on the idea of lightweight and reusable __Web Components__, Opulent greatly increases your development speed for any project.
3
+
4
+ ### Language Reference
5
+
6
+ 1. [Attributes](attributes.md)
7
+ 2. [Control Structures](control-structures.md)
8
+ 3. [Expressions](usage.md)
9
+ 4. [Comments](usage.md)
@@ -1,4 +1,4 @@
1
1
  # @Opulent
2
2
  module Opulent
3
- VERSION = "1.1.6"
3
+ VERSION = "1.1.7"
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: opulent
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.6
4
+ version: 1.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Grozav
@@ -129,13 +129,14 @@ files:
129
129
  - Gemfile
130
130
  - LICENSE
131
131
  - README.md
132
- - Rakefile
133
132
  - benchmark/benchmark.rb
134
133
  - benchmark/cases/node/node.haml
135
134
  - benchmark/cases/node/node.op
136
135
  - benchmark/cases/node/node.slim
137
136
  - bin/opulent
138
- - docs/syntax.md
137
+ - docs/attributes.md
138
+ - docs/control-structures.md
139
+ - docs/reference.md
139
140
  - docs/usage.md
140
141
  - lib/opulent.rb
141
142
  - lib/opulent/compiler.rb
data/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
3
-
4
- RSpec::Core::RakeTask.new(:spec)
5
-
6
- task :default => :spec
data/docs/syntax.md DELETED
@@ -1,3 +0,0 @@
1
- #Opulent Syntax
2
-
3
- @TODO