talius 0.5 → 0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -23
- data/lib/talius.rb +7 -4
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a624abc2cf8fd531e97d5fd08b205828f8732e99b9f0762eb001ec8f385c72b8
|
4
|
+
data.tar.gz: c1fdd7ddc052826b5cbebbd60734cd584cdfe781312b055491981bf6210ce33e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0a0586aaf72b6a6d586f8d9b398591a7ea28beba7428e8d5842e9d28afec30625a54d963bc2abb6967532e8956b3ee44b2dd2b14a3d47136391114ef07fa7ec3
|
7
|
+
data.tar.gz: 52df1eb542940556683a97ada06165ce733874e4ce1fa661a5b4747b4efe2c12310609e5e2d274cff924ff254a8e2835e0a8098c900d7019ecb74423b60c0866
|
data/README.md
CHANGED
@@ -10,25 +10,12 @@ selector.
|
|
10
10
|
In this example, the selector consists of just `a`, meaning it selects
|
11
11
|
`<a>` tags:
|
12
12
|
|
13
|
-
|
14
|
-
<tr>
|
15
|
-
<td class='right'>
|
16
|
-
<pre>1
|
17
|
-
2
|
18
|
-
3
|
19
|
-
4
|
20
|
-
</pre>
|
21
|
-
</td>
|
22
|
-
<td>
|
23
|
-
<pre>
|
13
|
+
```ruby {.line-numbers}
|
24
14
|
raw = 'a'
|
25
15
|
selector = Talius.new(raw)
|
26
16
|
rule = selector.rules[0]
|
27
17
|
rule.tags # => {"a"=>{"name"=>"a"}}
|
28
|
-
|
29
|
-
</td>
|
30
|
-
</tr>
|
31
|
-
</table>
|
18
|
+
```
|
32
19
|
|
33
20
|
Line 1 creates the raw CSS selector like you might find in a CSS file. Line 2
|
34
21
|
creates a `Talius` object.
|
@@ -47,7 +34,7 @@ are detailed below.
|
|
47
34
|
If a selector contains a tag name, that information will be put into the
|
48
35
|
`tags` hash of the rule. Consider this example.
|
49
36
|
|
50
|
-
```ruby
|
37
|
+
```ruby
|
51
38
|
raw = 'a'
|
52
39
|
selector = Talius.new(raw)
|
53
40
|
rule = selector.rules[0]
|
@@ -68,7 +55,7 @@ followed by the name of the tag. For example, the following code has a selector
|
|
68
55
|
for tags in the `mml` namespace with the name `a`. The keys in the `tags` hash
|
69
56
|
are formatted in the same way.
|
70
57
|
|
71
|
-
```ruby
|
58
|
+
```ruby
|
72
59
|
raw = 'mml|a'
|
73
60
|
selector = Talius.new(raw)
|
74
61
|
rule = selector.rules[0]
|
@@ -84,7 +71,7 @@ For multiple rules for a selector, separate the rules with a comma. For example,
|
|
84
71
|
the following code parses a selector with two rules, one for the `section` tag
|
85
72
|
and one for the `div` tag.
|
86
73
|
|
87
|
-
```ruby
|
74
|
+
```ruby
|
88
75
|
raw = 'section, div'
|
89
76
|
selector = Talius.new(raw)
|
90
77
|
selector.rules.length # => 2
|
@@ -96,7 +83,7 @@ selector.rules # => [{"tags"=>{"section"=>{"name"=>"section"}}}, {"tags"=>{"div"
|
|
96
83
|
If any ID descriptions are given, those IDs can be found in the rule's `ids`
|
97
84
|
hash. The keys are the names of the IDs, the values are always `true`.
|
98
85
|
|
99
|
-
```ruby
|
86
|
+
```ruby
|
100
87
|
raw = '#overview'
|
101
88
|
selector = Talius.new(raw)
|
102
89
|
rule = selector.rules[0]
|
@@ -108,7 +95,7 @@ rule.ids # => {"overview"=>true}
|
|
108
95
|
Classes are available in the `classes` property of the rule. `classes` is a
|
109
96
|
simple hash in which the value of each class is true.
|
110
97
|
|
111
|
-
```ruby
|
98
|
+
```ruby
|
112
99
|
raw = 'section.overview.current'
|
113
100
|
selector = Talius.new(raw)
|
114
101
|
rule = selector.rules[0]
|
@@ -122,7 +109,7 @@ key of each attribute and a `Talius::Node::Att` object.
|
|
122
109
|
|
123
110
|
In this simple example, the selector looks for tags with an `rel` attribute.
|
124
111
|
|
125
|
-
```ruby
|
112
|
+
```ruby
|
126
113
|
raw = '[rel]'
|
127
114
|
selector = Talius.new(raw)
|
128
115
|
rule = selector.rules[0]
|
@@ -133,7 +120,7 @@ att.name # => rel
|
|
133
120
|
|
134
121
|
If you assign a value to the attribute, that value will be in `value` property.
|
135
122
|
|
136
|
-
```ruby
|
123
|
+
```ruby
|
137
124
|
raw = '[rel=license]'
|
138
125
|
selector = Talius.new(raw)
|
139
126
|
rule = selector.rules[0]
|
@@ -145,7 +132,7 @@ att.value # => license
|
|
145
132
|
Attribute namespaces are indicated in the same way as with tags. You can access
|
146
133
|
the namespace with the `namespace` property.
|
147
134
|
|
148
|
-
```ruby
|
135
|
+
```ruby
|
149
136
|
raw = '[mml|rel]'
|
150
137
|
selector = Talius.new(raw)
|
151
138
|
rule = selector.rules[0]
|
@@ -154,6 +141,14 @@ att.name # => rel
|
|
154
141
|
att.namespace # => mml
|
155
142
|
```
|
156
143
|
|
144
|
+
## Not implemented
|
145
|
+
|
146
|
+
There are a few aspects of CSS selectors that have not yet been implemented.
|
147
|
+
|
148
|
+
* Combinators are not parsed.
|
149
|
+
* The `:not()` pseudo-class is not understood.
|
150
|
+
|
151
|
+
|
157
152
|
## Install
|
158
153
|
|
159
154
|
``
|
data/lib/talius.rb
CHANGED
@@ -6,9 +6,8 @@ require 'lx'
|
|
6
6
|
|
7
7
|
# A +Talius+ object represents a full CSS selector.
|
8
8
|
class Talius
|
9
|
-
# version '0.
|
10
|
-
VERSION = '0.
|
11
|
-
|
9
|
+
# version '0.6'
|
10
|
+
VERSION = '0.6'
|
12
11
|
|
13
12
|
# An array of rule objects.
|
14
13
|
attr_reader :rules
|
@@ -551,6 +550,9 @@ class Talius::Node
|
|
551
550
|
|
552
551
|
|
553
552
|
#---------------------------------------------------------------------------
|
553
|
+
# namespace
|
554
|
+
#
|
555
|
+
|
554
556
|
# The node's namespace. If a namespace is not explicitly given in the
|
555
557
|
# selector string then this property is nil.
|
556
558
|
#
|
@@ -684,6 +686,7 @@ class Talius::Node::Att < Talius::Node
|
|
684
686
|
#---------------------------------------------------------------------------
|
685
687
|
# initialize
|
686
688
|
#
|
689
|
+
|
687
690
|
def initialize(*opts)
|
688
691
|
super(*opts)
|
689
692
|
@value = nil
|
@@ -716,7 +719,7 @@ class Talius::Node::Att < Talius::Node
|
|
716
719
|
# to_h
|
717
720
|
#
|
718
721
|
|
719
|
-
# Returns a hash representation of the
|
722
|
+
# Returns a hash representation of the object.
|
720
723
|
def to_h
|
721
724
|
rv = super()
|
722
725
|
|