ios_parser 0.5.1-java

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,96 @@
1
+ require_relative '../spec_helper'
2
+ require 'ios_parser'
3
+
4
+ describe IOSParser do
5
+ describe '.parse' do
6
+ context 'indented region' do
7
+ let(:input) { <<-END.unindent }
8
+ policy-map mypolicy_in
9
+ class myservice_service
10
+ police 300000000 1000000 exceed-action policed-dscp-transmit
11
+ set dscp cs1
12
+ class other_service
13
+ police 600000000 1000000 exceed-action policed-dscp-transmit
14
+ set dscp cs2
15
+ command_with_no_args
16
+ END
17
+
18
+ let(:output) do
19
+ {
20
+ commands:
21
+ [{ args: ['policy-map', 'mypolicy_in'],
22
+ commands:
23
+ [{ args: %w[class myservice_service],
24
+ commands: [{ args: ['police', 300_000_000, 1_000_000,
25
+ 'exceed-action',
26
+ 'policed-dscp-transmit'],
27
+ commands: [{ args: %w[set dscp cs1],
28
+ commands: [], pos: 114 }],
29
+ pos: 50 }],
30
+ pos: 24 },
31
+
32
+ { args: %w[class other_service],
33
+ commands: [{ args: ['police', 600_000_000, 1_000_000,
34
+ 'exceed-action',
35
+ 'policed-dscp-transmit'],
36
+ commands: [{ args: %w[set dscp cs2],
37
+ commands: [], pos: 214 },
38
+ { args: ['command_with_no_args'],
39
+ commands: [], pos: 230 }],
40
+ pos: 150 }],
41
+ pos: 128 }],
42
+ pos: 0 }]
43
+ }
44
+ end
45
+
46
+ subject { described_class.parse(input) }
47
+
48
+ it('constructs the right AST') do
49
+ should be_a IOSParser::IOS::Document
50
+ expect(subject.to_hash).to eq output
51
+ end
52
+ end # context 'indented region'
53
+
54
+ context 'partial outdent' do
55
+ let(:input) do
56
+ <<-END.unindent
57
+ class-map match-any foobar
58
+ description blah blah blah
59
+ match access-group fred
60
+ END
61
+ end
62
+
63
+ let(:output) do
64
+ {
65
+ commands:
66
+ [
67
+ {
68
+ args: ['class-map', 'match-any', 'foobar'],
69
+ commands: [
70
+ {
71
+ args: %w[description blah blah blah],
72
+ commands: [],
73
+ pos: 29
74
+ },
75
+ {
76
+ args: ['match', 'access-group', 'fred'],
77
+ commands: [],
78
+ pos: 57
79
+ }
80
+ ],
81
+ pos: 0
82
+ }
83
+ ]
84
+ }
85
+ end
86
+
87
+ subject { described_class.parse(input) }
88
+
89
+ it 'constructs the right AST' do
90
+ should be_a IOSParser::IOS::Document
91
+ actual = subject.to_hash
92
+ expect(actual).to eq(output)
93
+ end
94
+ end # context "partial outdent" do
95
+ end # describe '.parse'
96
+ end # describe IOSParser
@@ -0,0 +1,19 @@
1
+ $LOAD_PATH << File.dirname(__FILE__) + '/../lib'
2
+
3
+ def klass
4
+ described_class
5
+ end
6
+
7
+ def text_fixture(name)
8
+ File.read(File.expand_path(__dir__ + "/../fixtures/#{name}.txt"))
9
+ end
10
+
11
+ class String
12
+ def unindent
13
+ indent = split("\n")
14
+ .reject { |line| line.strip.empty? }
15
+ .map { |line| line.index(/[^\s]/) }
16
+ .compact.min || 0
17
+ gsub(/^[[:blank:]]{#{indent}}/, '')
18
+ end
19
+ end
metadata ADDED
@@ -0,0 +1,121 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ios_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.5.1
5
+ platform: java
6
+ authors:
7
+ - Ben Miller
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-10 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '0.9'
19
+ name: rake-compiler
20
+ prerelease: false
21
+ type: :development
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.9'
27
+ - !ruby/object:Gem::Dependency
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '3.2'
33
+ name: rspec
34
+ prerelease: false
35
+ type: :development
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.2'
41
+ - !ruby/object:Gem::Dependency
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.54'
47
+ name: rubocop
48
+ prerelease: false
49
+ type: :development
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.54'
55
+ description:
56
+ email: bjmllr@gmail.com
57
+ executables: []
58
+ extensions: []
59
+ extra_rdoc_files: []
60
+ files:
61
+ - ".gitignore"
62
+ - ".rubocop.yml"
63
+ - ".travis.yml"
64
+ - CHANGELOG.md
65
+ - CODE_OF_CONDUCT.md
66
+ - Gemfile
67
+ - Guardfile
68
+ - LICENSE.txt
69
+ - README.md
70
+ - Rakefile
71
+ - bin/console
72
+ - bin/setup
73
+ - doc/state_machine.graphviz
74
+ - doc/state_machine.png
75
+ - ext/ios_parser/c_lexer/extconf.rb
76
+ - ext/ios_parser/c_lexer/lexer.c
77
+ - fixtures/complex_banner.txt
78
+ - ios_parser.gemspec
79
+ - lib/ios_parser.rb
80
+ - lib/ios_parser/ios.rb
81
+ - lib/ios_parser/ios/command.rb
82
+ - lib/ios_parser/ios/document.rb
83
+ - lib/ios_parser/ios/queryable.rb
84
+ - lib/ios_parser/lexer.rb
85
+ - lib/ios_parser/pure.rb
86
+ - lib/ios_parser/version.rb
87
+ - spec/lib/ios_parser/ios/queryable_spec.rb
88
+ - spec/lib/ios_parser/ios_spec.rb
89
+ - spec/lib/ios_parser/lexer_spec.rb
90
+ - spec/lib/ios_parser_spec.rb
91
+ - spec/spec_helper.rb
92
+ homepage: https://github.com/bjmllr/ios_parser
93
+ licenses:
94
+ - GPL-3.0
95
+ metadata: {}
96
+ post_install_message:
97
+ rdoc_options: []
98
+ require_paths:
99
+ - lib
100
+ required_ruby_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ required_rubygems_version: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ requirements: []
111
+ rubyforge_project:
112
+ rubygems_version: 2.7.6
113
+ signing_key:
114
+ specification_version: 4
115
+ summary: convert network switch and router config files to structured data
116
+ test_files:
117
+ - spec/lib/ios_parser/ios/queryable_spec.rb
118
+ - spec/lib/ios_parser/ios_spec.rb
119
+ - spec/lib/ios_parser/lexer_spec.rb
120
+ - spec/lib/ios_parser_spec.rb
121
+ - spec/spec_helper.rb