iosparse 0.0.4 → 0.0.5
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.
- data/iosparse.gemspec +3 -2
- data/lib/iosparse.rb +22 -18
- metadata +4 -3
data/iosparse.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = "iosparse"
|
5
|
-
s.version = "0.0.
|
5
|
+
s.version = "0.0.5"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Ari Mizrahi"]
|
9
|
-
s.date = "2013-05-
|
9
|
+
s.date = "2013-05-02"
|
10
10
|
s.description = "Parse Cisco IOS configurations"
|
11
11
|
s.email = "codemunchies@gmail.com"
|
12
12
|
s.files = ["lib/iosparse.rb", "iosparse.gemspec", "Gemfile", "README.md"]
|
@@ -14,5 +14,6 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.homepage = "http://github.com/codemunchies/iosparse"
|
15
15
|
s.rubygems_version = "1.8.25"
|
16
16
|
s.summary = "Parse Cisco IOS configurations"
|
17
|
+
s.license = "GPL-3"
|
17
18
|
end
|
18
19
|
|
data/lib/iosparse.rb
CHANGED
@@ -7,11 +7,18 @@ class IOSParse
|
|
7
7
|
# Store all blocks in the configuration
|
8
8
|
@blocks = Array.new
|
9
9
|
# Load the file
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
10
|
+
begin
|
11
|
+
config = File.open(filename, 'r')
|
12
|
+
# Stream IO.read the file and scan for blocks, lines inbetween "!"
|
13
|
+
IO.read(config).scan(/(^[^!]+)/).each do |block|
|
14
|
+
# Push the blocks to the @blocks array
|
15
|
+
@blocks << block
|
16
|
+
end
|
17
|
+
rescue
|
18
|
+
# TODO: raise an error here 'bad file or path'
|
19
|
+
ensure
|
20
|
+
# Make sure we close the file
|
21
|
+
config.close
|
15
22
|
end
|
16
23
|
end
|
17
24
|
|
@@ -68,7 +75,7 @@ class IOSParse
|
|
68
75
|
#
|
69
76
|
# Find all object-groups
|
70
77
|
#
|
71
|
-
def
|
78
|
+
def object_groups
|
72
79
|
# Regex to parse out object-groups
|
73
80
|
group = /object-group[\s\S]+/
|
74
81
|
# Call find_blocks() passing regex, parent name, and parse boolean
|
@@ -85,7 +92,7 @@ class IOSParse
|
|
85
92
|
output = Array.new
|
86
93
|
@blocks.each do |block|
|
87
94
|
# Use regex to filter via scan() and flatten then push to array
|
88
|
-
output << block.to_s.scan(filter).flatten if block.to_s.include?(parent)
|
95
|
+
output << normalize_block(block.to_s.scan(filter).flatten) if block.to_s.include?(parent)
|
89
96
|
end
|
90
97
|
# Some parents are not within "!" blocks and require some extra work
|
91
98
|
if parse == true then
|
@@ -107,7 +114,7 @@ class IOSParse
|
|
107
114
|
block.to_s.match(filter).to_s.split('\n').each do |line|
|
108
115
|
# Skip unless the parent is in the line
|
109
116
|
next unless line.match(filter)
|
110
|
-
# Push matches to array
|
117
|
+
# Push matches to array and normalize the matched lines
|
111
118
|
output << normalize_line(line.match(filter))
|
112
119
|
end
|
113
120
|
end
|
@@ -152,22 +159,19 @@ class IOSParse
|
|
152
159
|
|
153
160
|
#
|
154
161
|
# Normalize block to standardize returned arrays
|
162
|
+
# All new line characters should be '\n'
|
155
163
|
#
|
156
|
-
def normalize_block(
|
157
|
-
#
|
158
|
-
|
159
|
-
block.each do |data|
|
160
|
-
# Normalize data
|
161
|
-
output << "[\"#{data}\\\\n\"]"
|
162
|
-
end
|
163
|
-
# Return the normalized array
|
164
|
-
output
|
164
|
+
def normalize_block(data)
|
165
|
+
# Return normalized data
|
166
|
+
data.to_s.gsub("\\\\n", '\n') if data.to_s.include?('\\\\n')
|
165
167
|
end
|
166
168
|
|
167
169
|
#
|
168
170
|
# Normalize line to standardize returned arrays
|
171
|
+
# All new line characters should be '\n'
|
172
|
+
#
|
169
173
|
def normalize_line(data)
|
170
174
|
# Return normalized data
|
171
|
-
"[\"#{data}
|
175
|
+
"[\"#{data}\\n\"]" unless data.to_s.include?('\n')
|
172
176
|
end
|
173
177
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: iosparse
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-05-
|
12
|
+
date: 2013-05-02 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Parse Cisco IOS configurations
|
15
15
|
email: codemunchies@gmail.com
|
@@ -22,7 +22,8 @@ files:
|
|
22
22
|
- Gemfile
|
23
23
|
- README.md
|
24
24
|
homepage: http://github.com/codemunchies/iosparse
|
25
|
-
licenses:
|
25
|
+
licenses:
|
26
|
+
- GPL-3
|
26
27
|
post_install_message:
|
27
28
|
rdoc_options: []
|
28
29
|
require_paths:
|