mirror of
https://github.com/ericchiang/pup
synced 2024-11-24 08:58:08 +00:00
slices cleaned up
This commit is contained in:
parent
5c76aeeba9
commit
791366455e
23
README.md
23
README.md
@ -139,7 +139,7 @@ selected for the next round of selection.
|
|||||||
Provide one number for a simple index.
|
Provide one number for a simple index.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ pup < robots.html a {0}
|
$ pup < robots.html a slice{0}
|
||||||
<a id="top">
|
<a id="top">
|
||||||
</a>
|
</a>
|
||||||
```
|
```
|
||||||
@ -148,7 +148,7 @@ You can provide an end to limit the number of nodes selected.
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
$ # {:3} is the same as {0:3}
|
$ # {:3} is the same as {0:3}
|
||||||
$ pup < robots.html a {:3}
|
$ pup < robots.html a slice{:3}
|
||||||
<a id="top">
|
<a id="top">
|
||||||
</a>
|
</a>
|
||||||
<a href="#mw-navigation">
|
<a href="#mw-navigation">
|
||||||
@ -159,7 +159,24 @@ $ pup < robots.html a {:3}
|
|||||||
</a>
|
</a>
|
||||||
```
|
```
|
||||||
|
|
||||||
The `by` index still needs work.
|
The `by` indexer works particularly well with tables.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
$ curl -s http://www.pro-football-reference.com/boxscores/201402020den.htm | \
|
||||||
|
pup table#linescore td slice{::6}
|
||||||
|
<td align="left">
|
||||||
|
<a href="/teams/sea/2013.htm">
|
||||||
|
Seattle Seahawks
|
||||||
|
</a>
|
||||||
|
(13-3-0)
|
||||||
|
</td>
|
||||||
|
<td align="left">
|
||||||
|
<a href="/teams/den/2013.htm">
|
||||||
|
Denver Broncos
|
||||||
|
</a>
|
||||||
|
(13-3-0)
|
||||||
|
</td>
|
||||||
|
```
|
||||||
|
|
||||||
## Implemented Selectors
|
## Implemented Selectors
|
||||||
|
|
||||||
|
2
main.go
2
main.go
@ -12,7 +12,7 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
const VERSION string = "0.2.0"
|
const VERSION string = "0.2.1"
|
||||||
|
|
||||||
var (
|
var (
|
||||||
// Flags
|
// Flags
|
||||||
|
@ -269,7 +269,7 @@ func (sel SliceSelector) Select(nodes []*html.Node) []*html.Node {
|
|||||||
selected = append(selected, nodes[i])
|
selected = append(selected, nodes[i])
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for i := end - 1; i > 0 && i >= start; i = i + by {
|
for i := end - 1; i >= 0 && i >= start; i = i + by {
|
||||||
selected = append(selected, nodes[i])
|
selected = append(selected, nodes[i])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -328,12 +328,12 @@ func parseSliceSelector(s string) (sel SliceSelector, err error) {
|
|||||||
|
|
||||||
func parseSelectorFunc(s string) (Selector, error) {
|
func parseSelectorFunc(s string) (Selector, error) {
|
||||||
switch {
|
switch {
|
||||||
case strings.HasPrefix(s, "{"):
|
case strings.HasPrefix(s, "slice{"):
|
||||||
if !strings.HasSuffix(s, "}") {
|
if !strings.HasSuffix(s, "}") {
|
||||||
return nil, fmt.Errorf(
|
return nil, fmt.Errorf(
|
||||||
"slice func must end with a '}'")
|
"slice func must end with a '}'")
|
||||||
}
|
}
|
||||||
s = strings.TrimPrefix(s, "{")
|
s = strings.TrimPrefix(s, "slice{")
|
||||||
s = strings.TrimSuffix(s, "}")
|
s = strings.TrimSuffix(s, "}")
|
||||||
return parseSliceSelector(s)
|
return parseSliceSelector(s)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user