robots_tag_parser 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
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: []