onion 0.1.1 → 0.1.2

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.
@@ -0,0 +1,32 @@
1
+ module Onion
2
+ grammar StreamLists
3
+ include Common
4
+
5
+ rule stream_list
6
+ stream_list_entry+ {
7
+ def streams
8
+ streams = []
9
+ self.elements.each do |stream|
10
+ streams << Stream.new(stream.s_id.text_value.strip, stream.c_id.text_value.strip)
11
+ end
12
+ return streams
13
+ end
14
+ }
15
+ end
16
+
17
+ rule stream_list_entry
18
+ s_id:StreamID SP s:StreamStatus SP c_id:CircuitID SP t:Target "\r\n"
19
+ end
20
+
21
+ rule StreamStatus
22
+ "NEW" / "NEWRESOLVE" / "REMAP" / "SENTCONNECT" / "SENTRESOLVE" /
23
+ "SUCCEEDED" / "FAILED" / "CLOSED" / "DETACHED"
24
+ end
25
+
26
+ rule Target
27
+ [$0-9a-zA-Z\.\-]+ ":" [0-9]+
28
+ #Address ":" Port
29
+ end
30
+
31
+ end
32
+ end
@@ -1,7 +1,7 @@
1
1
  namespace :tt do
2
2
  desc "Generate Ruby parsers from Treetop grammars."
3
3
  task :gen do
4
- task_path = File.expand_path('../../lib/onion/parsers/*.treetop', __FILE__)
4
+ task_path = File.expand_path('../../onion/parsers/*.treetop', __FILE__)
5
5
  Dir.glob(task_path) do |filename|
6
6
  # `tt #{filename}`
7
7
  `bundle exec tt #{filename}`
metadata CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
5
5
  segments:
6
6
  - 0
7
7
  - 1
8
- - 1
9
- version: 0.1.1
8
+ - 2
9
+ version: 0.1.2
10
10
  platform: ruby
11
11
  authors:
12
12
  - Poet (Tim Sally)
@@ -14,7 +14,7 @@ autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
16
 
17
- date: 2010-10-03 00:00:00 -05:00
17
+ date: 2010-11-18 00:00:00 -06:00
18
18
  default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
@@ -41,12 +41,25 @@ extensions: []
41
41
  extra_rdoc_files: []
42
42
 
43
43
  files:
44
- - README.rdoc
44
+ - README.txt
45
+ - License.txt
45
46
  - Rakefile
47
+ - lib/onion/control_client.rb
48
+ - lib/onion/elements/circuit.rb
49
+ - lib/onion/elements/circuit_list.rb
46
50
  - lib/onion/elements/router.rb
47
51
  - lib/onion/elements/router_list.rb
52
+ - lib/onion/elements/stream.rb
53
+ - lib/onion/elements/stream_list.rb
48
54
  - lib/onion/elements.rb
49
- - lib/onion/parsers/router_lists.treetop
55
+ - lib/onion/parsers/circuit_lists.rb
56
+ - lib/onion/parsers/circuit_lists.treetop
57
+ - lib/onion/parsers/common.rb
58
+ - lib/onion/parsers/common.treetop
59
+ - lib/onion/parsers/router_statuses.rb
60
+ - lib/onion/parsers/router_statuses.treetop
61
+ - lib/onion/parsers/stream_lists.rb
62
+ - lib/onion/parsers/stream_lists.treetop
50
63
  - lib/onion.rb
51
64
  - lib/tasks/treetop.rake
52
65
  has_rdoc: true
@@ -1,133 +0,0 @@
1
- module Onion
2
- grammar RouterLists
3
-
4
- # --- Rule to start matching against. ----------------------------------- #
5
-
6
- rule router_list
7
- router_list_entry+ {
8
- def routers
9
- routers = []
10
- self.elements.each do |e|
11
- if e.respond_to? :s # Optional status flags are in the entry.
12
- routers << Onion::Router.new(e.r.nick, e.r.id_hash, e.s.flags)
13
- else
14
- routers << Onion::Router.new(e.r_nos.nick, e.r_nos.id_hash, nil)
15
- end
16
- end
17
- return routers
18
- end
19
- }
20
- end
21
-
22
- rule router_list_entry
23
- r:router "\n" s:status "\n" / r_nos:router "\n"
24
- end
25
-
26
- # --- General use rules. ------------------------------------------------ #
27
-
28
- rule base64_char
29
- [A-Za-z0-9+/]
30
- end
31
-
32
- rule year
33
- [0-9] [0-9] [0-9] [0-9]
34
- end
35
-
36
- rule month
37
- [0] [1-9] / [1] [0-2]
38
- end
39
-
40
- rule day
41
- [0-2] [0-9] / [3] [0-1]
42
- end
43
-
44
- rule hour
45
- [0] [1-9] / [1] [0-9] / [2] [0-4]
46
- end
47
-
48
- rule minute
49
- [0] [0-9] / [1-5] [0-9]
50
- end
51
-
52
- rule second
53
- [0] [0-9] / [1-5] [0-9]
54
- end
55
-
56
- rule ip_addr_byte
57
- [2] [5] [0-5] / [2] [0-4] [0-9] / [1] [0-9] [0-9] / [1-9] [0-9] / [0-9]
58
- end
59
-
60
- rule sp
61
- " "+
62
- end
63
-
64
- # --- Rules needed to parse the router lines. --------------------------- #
65
-
66
- rule router
67
- "r " n:nick id:id_hash desc_hash desc_time ip_addr or_port dir_port {
68
- def nick
69
- n.text_value.strip
70
- end
71
-
72
- def id_hash
73
- id.text_value.strip
74
- end
75
- }
76
- end
77
-
78
- rule nick
79
- # TODO: This should be 1-19 alphanumeric chars, but this isn't easy
80
- # to do in Treetop.
81
- [a-zA-Z0-9]+ sp
82
- end
83
-
84
- rule id_hash
85
- base64_char+ sp
86
- end
87
-
88
- rule desc_hash
89
- base64_char+ sp
90
- end
91
-
92
- rule desc_time
93
- year "-" month "-" day " " hour ":" minute ":" second sp
94
- end
95
-
96
- rule ip_addr
97
- ip_addr_byte "." ip_addr_byte "." ip_addr_byte "." ip_addr_byte sp
98
- end
99
-
100
- rule or_port
101
- [0-9]+ sp
102
- end
103
-
104
- rule dir_port
105
- [0-9]+ sp?
106
- end
107
-
108
- # --- Rules needed to parse the status lines. --------------------------- #
109
-
110
- rule status
111
- "s " (valid:status_flag sp? / invalid_status_flag sp?)+ {
112
- def flags
113
- results = []
114
- self.elements[1].elements.each do |e|
115
- if e.respond_to? :valid
116
- results << e.valid.text_value
117
- end
118
- end
119
- return results
120
- end
121
- }
122
- end
123
-
124
- rule status_flag
125
- "Authority" / "BadExit" / "BadDirectory" / "Exit" / "Fast"
126
- / "Guard" / "Named" / "Stable" / "Running" / "Valid" / "V2Dir"
127
- end
128
-
129
- rule invalid_status_flag
130
- [a-zA-Z]+
131
- end
132
- end
133
- end