robots_tag_parser 0.1.1

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: a809876ca8fb408908258b92c72b098ce6eb13256d5bbc96c1bea4bdca404bc3
4
+ data.tar.gz: ab449b96a869192412b0fd1e47cf5382cdfbff7c8a73ef104f958286b0a0616c
5
+ SHA512:
6
+ metadata.gz: 7e963d9cc19af7ab621a17bc5fdc0a270acb7e7a8e2aa7ad73abfa225b5a8a60358a3783f998fbea560e999de79028c6ecf36ad973a5ecf2e5979a09ec71b0a3
7
+ data.tar.gz: 0f5704d0d9de04a9081ebe22e830da9cc8f353bdbcfad2f850b23484906e90f8f7a63db5376080df0d89a4726ea2e10248d38889ecdd1f88745586d37f56e735
@@ -0,0 +1,66 @@
1
+ # Ruby CircleCI 2.0 configuration file
2
+ #
3
+ # Check https://circleci.com/docs/2.0/language-ruby/ for more details
4
+ #
5
+ version: 2.1
6
+
7
+ orbs:
8
+ ruby: circleci/ruby@2.0.0
9
+
10
+ jobs:
11
+ build_and_test:
12
+ parameters:
13
+ ruby_version:
14
+ type: string
15
+ environment:
16
+ CC_TEST_REPORTER_ID: 04c5e730214438ccb56fa2e218bc65bcc1ae4ea86efb5c1f58f7eb9cc065c82a
17
+ COVERAGE: true
18
+ docker:
19
+ - image: cimg/ruby:<< parameters.ruby_version >>
20
+
21
+ working_directory: ~/robots_tag_parser
22
+
23
+ steps:
24
+ - checkout
25
+
26
+ # Install gems with Bundler
27
+ - ruby/install-deps:
28
+ # Need to clear the gem cache? Set or bump the CACHE_VERSION in your
29
+ # CircleCi project: Project Settings > Environment Variables
30
+ key: gems-ruby-<< parameters.ruby_version >>-v{{ .Environment.CACHE_VERSION }}
31
+
32
+ - run:
33
+ name: Prepare Code Climate Test Reporter
34
+ command: |
35
+ curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
36
+ chmod +x ./cc-test-reporter
37
+ ./cc-test-reporter before-build
38
+
39
+ - ruby/rspec-test:
40
+ # Need to temporarily test with a particular seed? Use:
41
+ # order: rand:123
42
+ order: rand
43
+
44
+ - run:
45
+ name: Report Test Results
46
+ command: |
47
+ ./cc-test-reporter after-build
48
+
49
+ # collect reports
50
+ - store_test_results:
51
+ path: /tmp/test-results
52
+ - store_artifacts:
53
+ path: /tmp/test-results
54
+ destination: test-results
55
+
56
+ workflows:
57
+ build_and_test:
58
+ jobs:
59
+ - build_and_test:
60
+ name: "Ruby << matrix.ruby_version >>"
61
+ matrix:
62
+ parameters:
63
+ ruby_version:
64
+ - 2.7.6
65
+ - 3.0.4
66
+ - 3.1.2
@@ -0,0 +1,13 @@
1
+ name: RobotsTagParser
2
+ description: 'A gem to parse X-Robots-Tag HTTP headers.'
3
+ license: 'https://creativecommons.org/publicdomain/zero/1.0'
4
+ openSourceProject: 1
5
+ governmentWideReuseProject: 1
6
+ tags:
7
+ - GSA
8
+ - Search.gov
9
+ - search
10
+ - indexing
11
+ - robots
12
+ contact:
13
+ email: search@gsa.gov
@@ -0,0 +1,19 @@
1
+ ## Summary
2
+ - Brief summary of the changes included in this PR
3
+ - Any additional information or context which may help the reviewer
4
+
5
+ ### Checklist
6
+ Please ensure you have addressed all concerns below before marking a PR "ready for review" or before requesting a re-review. If you cannot complete an item below, replace the checkbox with the ⚠️ `:warning:` emoji and explain why the step was not completed.
7
+
8
+ #### Functionality Checks
9
+ - [ ] You have merged the latest changes from the target branch (usually `main`) into your branch.
10
+
11
+ - [ ] Your primary commit message is of the format **SRCH-#### \<description\>** matching the associated Jira ticket.
12
+
13
+ - [ ] PR title is either of the format **SRCH-#### \<description\>** matching the associated Jira ticket (i.e. "SRCH-123 implement feature X"), or **Release - SRCH-####, SRCH-####, SRCH-####** matching the Jira ticket numbers in the release.
14
+
15
+ - [ ] Automated checks pass, if applicable. If Code Climate checks do not pass, explain reason for failures:
16
+
17
+ #### Process Checks
18
+
19
+ - [ ] You have specified at least one "Reviewer".
data/.gitignore ADDED
@@ -0,0 +1,14 @@
1
+ /.bundle/
2
+ /.yardoc
3
+ /_yardoc/
4
+ /coverage/
5
+ /doc/
6
+ /pkg/
7
+ /spec/reports/
8
+ /tmp/
9
+
10
+ # rspec failure tracking
11
+ .rspec_status
12
+
13
+ # Ignore the rubocop YAML file that is downloaded when running `rubocop` locally
14
+ .rubocop*default-yml
data/.rspec ADDED
@@ -0,0 +1,2 @@
1
+ --format documentation
2
+ --color
data/.rubocop.yml ADDED
@@ -0,0 +1,2 @@
1
+ inherit_from:
2
+ - https://raw.githubusercontent.com/GSA/searchgov_style/main/.default.yml
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source "https://rubygems.org"
2
+
3
+ git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
4
+
5
+ # Specify your gem's dependencies in robots_tag_parser.gemspec
6
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,111 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ robots_tag_parser (0.1.1)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ activesupport (7.0.4)
10
+ concurrent-ruby (~> 1.0, >= 1.0.2)
11
+ i18n (>= 1.6, < 2)
12
+ minitest (>= 5.1)
13
+ tzinfo (~> 2.0)
14
+ ast (2.4.2)
15
+ coderay (1.1.3)
16
+ concurrent-ruby (1.1.10)
17
+ debug (1.6.3)
18
+ irb (>= 1.3.6)
19
+ reline (>= 0.3.1)
20
+ diff-lcs (1.5.0)
21
+ docile (1.4.0)
22
+ i18n (1.12.0)
23
+ concurrent-ruby (~> 1.0)
24
+ io-console (0.5.11)
25
+ irb (1.4.2)
26
+ reline (>= 0.3.0)
27
+ method_source (1.0.0)
28
+ minitest (5.16.3)
29
+ parallel (1.22.1)
30
+ parser (3.1.2.1)
31
+ ast (~> 2.4.1)
32
+ pry (0.14.1)
33
+ coderay (~> 1.1)
34
+ method_source (~> 1.0)
35
+ rack (3.0.0)
36
+ rainbow (3.1.1)
37
+ rake (13.0.6)
38
+ regexp_parser (2.6.0)
39
+ reline (0.3.1)
40
+ io-console (~> 0.5)
41
+ rexml (3.2.5)
42
+ rspec (3.12.0)
43
+ rspec-core (~> 3.12.0)
44
+ rspec-expectations (~> 3.12.0)
45
+ rspec-mocks (~> 3.12.0)
46
+ rspec-core (3.12.0)
47
+ rspec-support (~> 3.12.0)
48
+ rspec-expectations (3.12.0)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.12.0)
51
+ rspec-mocks (3.12.0)
52
+ diff-lcs (>= 1.2.0, < 2.0)
53
+ rspec-support (~> 3.12.0)
54
+ rspec-support (3.12.0)
55
+ rspec_junit_formatter (0.5.1)
56
+ rspec-core (>= 2, < 4, != 2.12.0)
57
+ rubocop (1.31.0)
58
+ parallel (~> 1.10)
59
+ parser (>= 3.1.0.0)
60
+ rainbow (>= 2.2.2, < 4.0)
61
+ regexp_parser (>= 1.8, < 3.0)
62
+ rexml (>= 3.2.5, < 4.0)
63
+ rubocop-ast (>= 1.18.0, < 2.0)
64
+ ruby-progressbar (~> 1.7)
65
+ unicode-display_width (>= 1.4.0, < 3.0)
66
+ rubocop-ast (1.23.0)
67
+ parser (>= 3.1.1.0)
68
+ rubocop-performance (1.15.0)
69
+ rubocop (>= 1.7.0, < 2.0)
70
+ rubocop-ast (>= 0.4.0)
71
+ rubocop-rails (2.15.2)
72
+ activesupport (>= 4.2.0)
73
+ rack (>= 1.1)
74
+ rubocop (>= 1.7.0, < 2.0)
75
+ rubocop-rake (0.6.0)
76
+ rubocop (~> 1.0)
77
+ rubocop-rspec (2.12.1)
78
+ rubocop (~> 1.31)
79
+ ruby-progressbar (1.11.0)
80
+ searchgov_style (0.1.20)
81
+ rubocop (= 1.31.0)
82
+ rubocop-performance (~> 1.9)
83
+ rubocop-rails (~> 2.9)
84
+ rubocop-rake (~> 0.5)
85
+ rubocop-rspec (~> 2.5)
86
+ simplecov (0.21.2)
87
+ docile (~> 1.1)
88
+ simplecov-html (~> 0.11)
89
+ simplecov_json_formatter (~> 0.1)
90
+ simplecov-html (0.12.3)
91
+ simplecov_json_formatter (0.1.4)
92
+ tzinfo (2.0.5)
93
+ concurrent-ruby (~> 1.0)
94
+ unicode-display_width (2.3.0)
95
+
96
+ PLATFORMS
97
+ ruby
98
+
99
+ DEPENDENCIES
100
+ bundler (>= 2.3)
101
+ debug
102
+ pry
103
+ rake
104
+ robots_tag_parser!
105
+ rspec (~> 3.0)
106
+ rspec_junit_formatter
107
+ searchgov_style
108
+ simplecov
109
+
110
+ BUNDLED WITH
111
+ 2.3.15
data/LICENSE.md ADDED
@@ -0,0 +1,31 @@
1
+ As a work of the United States government, this project is in the
2
+ public domain within the United States.
3
+
4
+ Additionally, we waive copyright and related rights in the work
5
+ worldwide through the CC0 1.0 Universal public domain dedication.
6
+
7
+ ## CC0 1.0 Universal summary
8
+
9
+ This is a human-readable summary of the [Legal Code (read the full text)](https://creativecommons.org/publicdomain/zero/1.0/legalcode).
10
+
11
+ ### No copyright
12
+
13
+ The person who associated a work with this deed has dedicated the work to
14
+ the public domain by waiving all rights to the work worldwide
15
+ under copyright law, including all related and neighboring rights, to the
16
+ extent allowed by law.
17
+
18
+ You can copy, modify, distribute and perform the work, even for commercial
19
+ purposes, all without asking permission.
20
+
21
+ ### Other information
22
+
23
+ In no way are the patent or trademark rights of any person affected by CC0,
24
+ nor are the rights that other persons may have in the work or in how the
25
+ work is used, such as publicity or privacy rights.
26
+
27
+ Unless expressly stated otherwise, the person who associated a work with
28
+ this deed makes no warranties about the work, and disclaims liability for
29
+ all uses of the work, to the fullest extent permitted by applicable law.
30
+ When using or citing the work, you should not imply endorsement by the
31
+ author or the affirmer.
data/README.md ADDED
@@ -0,0 +1,69 @@
1
+ # RobotsTagParser
2
+
3
+ A simple gem to parse X-Robots-Tag HTTP headers according to [Google X-Robots-Tag HTTP header specifications](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#using-the-x-robots-tag-http-header).
4
+
5
+ [![CircleCI](https://circleci.com/gh/GSA/robots_tag_parser.svg?style=shield&circle-token=:circle-token)](https://circleci.com/gh/GSA/robots_tag_parser)
6
+ [![Code Climate](https://codeclimate.com/github/GSA/robots_tag_parser.svg)](https://codeclimate.com/github/GSA/robots_tag_parser)
7
+ [![Test Coverage](https://codeclimate.com/github/GSA/robots_tag_parser/badges/coverage.svg)](https://codeclimate.com/github/GSA/robots_tag_parser/coverage)
8
+
9
+ ## Installation
10
+
11
+ Add this line to your application's Gemfile:
12
+
13
+ ```ruby
14
+ gem 'robots_tag_parser', git: 'https://github.com/GSA/robots_tag_parser'
15
+ ```
16
+
17
+ And then execute:
18
+
19
+ $ bundle
20
+
21
+ ## Usage
22
+
23
+ ### Basic examples
24
+ Get rules applying to all user agents:
25
+
26
+ ```ruby
27
+ headers = { 'X-Robots-Tag' => ['noindex,noarchive', 'googlebot: nofollow'] }
28
+
29
+ RobotsTagParser.get_rules(headers: headers)
30
+ => ['noindex', 'noarchive']
31
+ ```
32
+
33
+ Get rules applying to specific user agents (which include generic
34
+ rules):
35
+
36
+ ```ruby
37
+ headers = { 'X-Robots-Tag' => ['noindex,noarchive', 'googlebot: nofollow'] }
38
+
39
+ RobotsTagParser.get_rules(headers: headers, user_agent: 'googlebot')
40
+ => ['noindex', 'noarchive', 'nofollow']
41
+ ```
42
+
43
+
44
+ ## Development
45
+
46
+ After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake spec` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
47
+
48
+ To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
49
+
50
+ ## Contributing
51
+
52
+ Bug reports and pull requests are welcome on [GitHub](https://github.com/GSA/robots_tag_parser).
53
+
54
+ ## License
55
+
56
+ The gem is available as open source under the terms of the [CC0 License](LICENSE.md).
57
+
58
+ ## Directives:
59
+ - [x] `all` - There are no restrictions for indexing or serving.
60
+ - [x] `none` - Equivalent to `noindex` and `nofollow`.
61
+ - [x] `noindex` - Do not show this page in search results and do not show a "Cached" link in search results.
62
+ - [x] `nofollow` - Do not follow the links on this page.
63
+ - [x] `noarchive` - Do not show a "Cached" link in search results.
64
+ - [x] `nosnippet` - Do not show a snippet in the search results for this page.
65
+ - [x] `notranslate` - Do not offer translation of this page in search results.
66
+ - [x] `noimageindex` - Do not index images on this page.
67
+ - [x] `unavailable_after` - Do not show this page in search results after the specified date/time.
68
+
69
+ Source: [https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag](https://developers.google.com/webmasters/control-crawl-index/docs/robots_meta_tag#valid-indexing--serving-directives)
data/Rakefile ADDED
@@ -0,0 +1,6 @@
1
+ require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
data/bin/console ADDED
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "robots_tag_parser"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
data/bin/setup ADDED
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -0,0 +1,3 @@
1
+ module RobotsTagParser
2
+ VERSION = "0.1.1"
3
+ end
@@ -0,0 +1,30 @@
1
+ require "robots_tag_parser/version"
2
+
3
+ module RobotsTagParser
4
+ def self.get_rules(headers:, user_agent: nil)
5
+ raise ArgumentError, 'Headers must be a hash' unless headers.is_a? Hash
6
+ rules = downcase_keys(headers)['x-robots-tag']
7
+ return [] unless rules
8
+ hash_of(rules).values_at('all', user_agent).compact.flatten.uniq
9
+ end
10
+
11
+ def self.downcase_keys(hash)
12
+ new_hash = {}
13
+ hash.each_pair{ |key, val| new_hash[key.downcase] = val }
14
+ new_hash
15
+ end
16
+
17
+ def self.hash_of(rules)
18
+ rules = (rules.is_a? String) ? [rules] : rules
19
+ rules.map!{ |rule| RuleParser.parse(rule) }.reduce(&:merge)
20
+ end
21
+
22
+ class RuleParser
23
+ def self.parse(rule_string)
24
+ rule = rule_string.downcase.split(/: */)
25
+ user_agent, rules = (rule.length == 1 ? 'all' : rule[0]), rule.last
26
+ rules = rules.split(',').map(&:strip)
27
+ Hash[[[user_agent, rules]]]
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,31 @@
1
+ lib = File.expand_path("../lib", __FILE__)
2
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
+ require "robots_tag_parser/version"
4
+
5
+ Gem::Specification.new do |spec|
6
+ spec.name = "robots_tag_parser"
7
+ spec.version = RobotsTagParser::VERSION
8
+ spec.authors = ["Martha Thompson"]
9
+ spec.email = ["mothonmars@gmail.com"]
10
+
11
+ spec.summary = %q{X-Robots-Tag HTTP header parser}
12
+ spec.description = %q{A simple gem to parse X-Robots-Tag HTTP headers according to Google X-Robots-Tag HTTP header specifications.}
13
+ spec.homepage = "https://github.com/GSA/robots_tag_parser"
14
+ spec.license = "MIT"
15
+
16
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
+ f.match(%r{^(test|spec|features)/})
18
+ end
19
+ spec.bindir = "exe"
20
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.require_paths = ["lib"]
22
+
23
+ spec.add_development_dependency "bundler", ">= 2.3"
24
+ spec.add_development_dependency "rake"
25
+ spec.add_development_dependency "rspec", "~> 3.0"
26
+ spec.add_development_dependency "rspec_junit_formatter" # used in CircleCI
27
+ spec.add_development_dependency "pry"
28
+ spec.add_development_dependency "simplecov"
29
+ spec.add_development_dependency "debug"
30
+ spec.add_development_dependency "searchgov_style"
31
+ end
metadata ADDED
@@ -0,0 +1,172 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: robots_tag_parser
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.1
5
+ platform: ruby
6
+ authors:
7
+ - Martha Thompson
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2022-11-07 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '2.3'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '2.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rspec
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '3.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '3.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec_junit_formatter
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: pry
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: simplecov
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: debug
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: searchgov_style
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ description: A simple gem to parse X-Robots-Tag HTTP headers according to Google X-Robots-Tag
126
+ HTTP header specifications.
127
+ email:
128
+ - mothonmars@gmail.com
129
+ executables: []
130
+ extensions: []
131
+ extra_rdoc_files: []
132
+ files:
133
+ - ".circleci/config.yml"
134
+ - ".codeinventory.yml"
135
+ - ".github/pull_request_template.md"
136
+ - ".gitignore"
137
+ - ".rspec"
138
+ - ".rubocop.yml"
139
+ - Gemfile
140
+ - Gemfile.lock
141
+ - LICENSE.md
142
+ - README.md
143
+ - Rakefile
144
+ - bin/console
145
+ - bin/setup
146
+ - lib/robots_tag_parser.rb
147
+ - lib/robots_tag_parser/version.rb
148
+ - robots_tag_parser.gemspec
149
+ homepage: https://github.com/GSA/robots_tag_parser
150
+ licenses:
151
+ - MIT
152
+ metadata: {}
153
+ post_install_message:
154
+ rdoc_options: []
155
+ require_paths:
156
+ - lib
157
+ required_ruby_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ required_rubygems_version: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ">="
165
+ - !ruby/object:Gem::Version
166
+ version: '0'
167
+ requirements: []
168
+ rubygems_version: 3.3.15
169
+ signing_key:
170
+ specification_version: 4
171
+ summary: X-Robots-Tag HTTP header parser
172
+ test_files: []